要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

UIElement.LostFocus 事件

UIElement 失去焦点时发生。

命名空间:  System.Windows
程序集:  System.Windows(在 System.Windows.dll 中)

public event RoutedEventHandler LostFocus
<uiElement LostFocus="eventhandler"/>

LostFocus 事件是一种冒泡事件。 这意味着,如果为由对象树中的父-子关系所连接的一系列对象注册了多个 LostFocus 事件处理程序,则事件将由该关系中的每个对象接收。 冒泡比喻表示事件在直接接收输入条件的对象上启动,然后沿对象树向上传递。 对于冒泡事件,可用于事件处理程序的 sender 标识处理该事件时所用的对象,而不必标识实际接收发起该事件的输入条件的对象。 若要获取发起该事件的对象,请使用事件的 RoutedEventArgs 事件数据的 OriginalSource 值。

处理 GotFocusLostFocus 事件时,在事件数据类中没有可用的 Handled 属性,事件将通过对象树继续向上路由并调用所有附加的处理程序。 如果您想处理对象树中各个级别上的焦点,这有时可能对于您应用程序的焦点事件处理策略并不合适。 您可能考虑使用下列方法之一:

  • 使用布尔型标志来记录聚焦状态。 从特定的处理程序调用将您自己的"Handled"变量设置为 true,您的设计认为该调用已正确处理事件。 在后续处理程序中查看此"Handled"变量,检查其他处理程序是否也处理了事件,如果处理了,则不执行任何操作。 在对象树的根部,至少出于将"Handled"重新设置为 false 以清除下一个焦点事件的状态的目的来处理该焦点事件。

  • 特别强调查看或使用由事件数据中的 senderOriginalSource 传输到处理程序的对象值。 只有满足以下条件时才能选择进行处理:sender 等于 OriginalSource,或 sender 是特殊的命名对象(此时将同一焦点事件处理程序附加到多个对象或类似的逻辑运算)。

由于 Silverlight 焦点系统的设计,异步引发 GotFocus 是为了应对实际焦点变动。 若要获取同步焦点值,请使用 FocusManager

LostFocus 和 OnLostFocus

继承 LostFocus 的控件可以通过重写 OnLostFocus 方法来处理充当所有实例的处理程序的事件。 与直接处理事件一样,没有可用的 Handled 属性,因此不能这样实现 OnLostFocus 以使它通过 Handled 技术取消事件的进一步处理。 但是,OnLostFocus 对于设置可视状态或公共或内部状态属性可能很有用。 例如,ComboBox 实现 OnLostFocus 以便根据基于焦点的用户输入设置所选项。 有关更多信息,请参见 OnLostFocus

Silverlight

受以下版本支持:5、4、3

Silverlight for Windows Phone

受以下版本支持:Windows Phone OS 7.1、Windows Phone OS 7.0

有关 Silverlight 支持的操作系统和浏览器的列表,请参见 支持的操作系统和浏览器

社区附加资源

添加
显示: