我在Silverlight和WPF中有一个应用程序。该错误恰好发生在Silverlight中,但WPF中使用了相同的代码。
在我的应用程序中,有一个RibbonBar
,有几个RibbonGroups
。在每个RibbonGroup
中,至少有一个RibbonButton
。其中一个RibbonGroups
也包含四个TextBox
。
每个TextBox
都有自己的OnLostFocus
- 处理程序。当我离开TextBox
时,相关的处理程序就会被提升。
现在,(1)我点击其中一个TextBoxes和(2)然后点击RibbonButton,OnLostFocus加注,然后出现RibbonButton下拉菜单。一切都好。
之后,(3)我点击另一个RibbonButton。再次OnLostFocus加注,虽然 - imho - 它不应该。
所以它一直在继续。在每个动作之后,TextBox保持(或者回来,不知道)焦点,这会导致OnLostFocus-Handler提升。
在WPF中,相同的代码不会再次引发OnLostFocus。只有一次,它真的失去了焦点。
有谁知道,为什么这种行为在Silverlight中很奇怪。与WPF有什么不同,也许我只需设置一个默认值与WPF不同的属性。
提前致谢。
答案 0 :(得分:0)
尝试使用OnPreviewLostKeyboardFocus。 OnLostFocus用于逻辑焦点,您可能会因各种原因而丢失。
我不知道确定的原因,但我怀疑你看到的问题可能是因为功能区栏位于FocusScope中。当你将焦点放在焦点范围内的某些东西上时,你最终得到的东西看起来就像聚焦在一些物体周围。我不确定这个答案,WPF中的焦点非常复杂。提交一些代码示例可能有所帮助。