TextBox LostFocus事件发生过于频繁

本文关键字:于频繁 LostFocus 事件 TextBox | 更新日期: 2023-09-27 18:18:31

我在Silverlight和WPF中有一个应用程序。该错误只发生在Silverlight中,但在WPF中使用相同的代码。

在我的应用中,有一个RibbonBar,有几个RibbonGroups。每个RibbonGroup中至少有一个RibbonButton。其中一个RibbonGroups还包含四个TextBox

每个TextBox都有自己的OnLostFocus -Handler。当我离开TextBox时,相关的处理程序被引发。

现在,(1)我点击其中一个文本框和(2)然后点击一个RibbonButton, OnLostFocus上升,之后出现了RibbonButton下拉菜单。一切都OK。

之后,(3)我点击另一个RibbonButton。OnLostFocus再次引发,尽管——我认为——它不应该。

就这样继续下去。在每个动作之后,文本框保持(或返回,不知道)焦点,这导致OnLostFocus-Handler引发。

在WPF相同的代码不会再次引发OnLostFocus。只有一次,当它真的失去焦点。

有没有人知道,为什么这个行为在Silverlight中那么奇怪?与WPF真正不同的是,也许我只需要设置一个默认值与WPF不同的属性。

TextBox LostFocus事件发生过于频繁

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

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