TextBox LostFocus事件经常发生

时间:2011-12-22 11:31:30

标签: c# wpf silverlight

我在Silverlight和WPF中有一个应用程序。该错误恰好发生在S​​ilverlight中,但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不同的属性。

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试使用OnPreviewLostKeyboardFocus。 OnLostFocus用于逻辑焦点,您可能会因各种原因而丢失。

我不知道确定的原因,但我怀疑你看到的问题可能是因为功能区栏位于FocusScope中。当你将焦点放在焦点范围内的某些东西上时,你最终得到的东西看起来就像聚焦在一些物体周围。我不确定这个答案,WPF中的焦点非常复杂。提交一些代码示例可能有所帮助。