Control.FocusState 属性

定义

获取一个值,该值指定此控件是否具有焦点,以及获取焦点的模式。

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 属性的值将是 PointerKeyboard

在为Windows 8编译但以Windows 8.1运行的应用中,保留Windows 8行为。 FocusState 属性值为 编程, 并显示键盘焦点视觉对象。

注意

ItemsControl 继承的类(如 ListBoxAutoSuggestBox)不会传播 FocusState 属性。 他们总是返回 无焦点。 通过 RoutedEventArgs.OriginalSource 访问正确的值。

适用于