Control.FocusState 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个值,该值指定此控件是否具有焦点,以及获取焦点的模式。
public:
property FocusState FocusState { FocusState get(); };
FocusState FocusState();
public FocusState FocusState { get; }
var focusState = control.focusState;
Public ReadOnly Property FocusState As FocusState
属性值
枚举的一个值。 值 Unfocused 表示控件没有焦点。
注解
此属性支持使用不同视觉样式的控件,具体取决于控件是通过键盘还是通过其他方式聚焦。 如果控件是通过键盘操作聚焦的,则某些控件使用视觉状态来显示可见的焦点指示器,但如果控件由指针操作聚焦,则不显示指示器。 此类控件的内部逻辑实现 OnGotFocus ,然后从发送方获取 FocusState 的值。 如果 FocusState 为 Keyboard,则通过调用 GoToState 加载包含焦点矩形的其他命名视觉状态。 通常,与焦点相关的视觉状态在默认控件模板 XAML 中组合在一起。 希望根据焦点方式使用不同的焦点视觉对象的自定义控件本身可以实现相同的逻辑。 请参阅 OnGotFocus。
使用此属性的另一种方法是使用 FocusManager 确定整个 UI 中的哪个元素具有焦点,然后针对该元素调用 FocusState 以获取有关该控件如何接收焦点的信息。
以前版本的说明
注意
在 Windows 8 中,当 FocusState 为编程时,即使前面的输入方法是指针,也会显示键盘焦点视觉对象。 在 Windows 8.1 中,调用 FocusState.Programmatic) (FocusState 时,会保留以前的 FocusState(指针或键盘),以便显示正确的焦点视觉对象。 这意味着,如果在调用 Focus (FocusState.Programmatic) 后检查 FocusState 属性的值,FocusState 属性的值将是 Pointer 或 Keyboard。
在为Windows 8编译但以Windows 8.1运行的应用中,保留Windows 8行为。 FocusState 属性值为 编程, 并显示键盘焦点视觉对象。
注意
从 ItemsControl 继承的类(如 ListBox 和 AutoSuggestBox)不会传播 FocusState 属性。 他们总是返回 无焦点。 通过 RoutedEventArgs.OriginalSource 访问正确的值。