2011-02-23 392 views
6

我有一个奇怪的错误,我试图调试没有运气。'{DependencyProperty.UnsetValue}'对于'FocusVisualStyle'属性不是有效的值

我有子类hwndhost呈现出一些内容,我在这个类下面的函数来设置为全屏:

private void SetFullScreen(bool enable) 
    { 
     if (enable) 
     { 
      fs = new Window(); 
      fs.ResizeMode = ResizeMode.NoResize; 
      fs.WindowState = System.Windows.WindowState.Maximized; 
      fs.WindowStyle = System.Windows.WindowStyle.None; 
      fs.Topmost = true; 
      fs.PreviewKeyDown += delegate(object sender, KeyEventArgs e) { 
       if (e.Key==Key.Escape) 
        FullScreen = false; 
      }; 
      fs.Show(); 
     } 
     else 
     { 
      fs.Close(); 
      fs = null; 
     } 
    } 

这工作得很好,我的原型WPF应用程序,但是当我在我的主要的应用程序使用此代码

'{DependencyProperty.UnsetValue}' is not a valid value for property 'FocusVisualStyle'.

奇怪的是它发生约1500毫秒之后的窗口关闭:关闭窗口时(Escape键)和fs.close()呼叫我得到这个错误。我试着将fs上的FocusVisualStyle设置为null,但它看起来像别的东西。直觉是它试图将另一个元素集中在我的应用程序中,但没有这个属性,但是我真的不知道!

谢谢!

编辑。问题是FocusVisualStyle在我的全屏按钮上的自定义设置。我设置为{x:Null},问题就消失了。

回答

7

我的猜测是,当您关闭所提到的窗口时获得焦点的控件具有由您设置的不包含任何FocusVisualStyle的自定义样式。

所以为了进一步帮助你,你应该多解释一下:当你关闭这个窗口时会发生什么(或者应该发生什么)?

什么控制类型应该得到重点?

+0

一个切换按钮启动全屏命令,所以我想这会得到回报的焦点。然而,稍后键盘命令(例如F12)可能会启动它,因此它可能是任何具有当前焦点的元素。该togglebutton具有自定义样式,我试着将该样式的FocusVisualStyle设置为{x:Null},但没有运气。 – DaveO 2011-02-23 18:57:45

+1

我说谎,它被设置在两个地方,取消第二个解决问题thx! – DaveO 2011-02-23 19:02:46

+0

没问题,乐意帮忙! – David 2011-02-23 19:56:05

相关问题