c# - TextBox LostFocus 事件发生得太频繁

标签 c# wpf silverlight

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

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

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

现在,(1) 我单击其中一个文本框,(2) 然后单击 RibbonButton,OnLostFocus 引发,然后出现 RibbonButton 下拉菜单。一切正常。

之后,(3) 我单击另一个 RibbonButton。 OnLostFocus 再次加注,尽管 - 恕我直言 - 它不应该。

就这样一直持续下去。在每次操作后,TextBox 保持(或返回,不知道)焦点,这会导致 OnLostFocus-Handler 引发。

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

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

提前致谢。

最佳答案

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

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

关于c# - TextBox LostFocus 事件发生得太频繁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603270/

相关文章:

c# - Solr - 为单个唯一 ID 存储多个 Word 文档

c# - API - 用单词片段过滤大列表

c# - ObservableCollection.CollectionChanged 未触发

c# - 在 MVVM 项目中,您如何命名 "other"类型的 View 模型?

silverlight - 如何仅使用 XAML 显示不同的 Enum 图标?

c# - 为 silverlight 解压缩 gzip 流

javascript - 在下拉列表更改时调用 Javascript 函数

c# - WPF 文本框中的按下键只允许一个字符事件

c# - 如何创建包含(并显示)其他 UIElement 作为子元素的自定义 UIElement 派生类?

c# - Silverlight 4 平铺背景