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中,當您呼叫Focus (FocusState.Programmatic) 時,會保留先前的 FocusState 或Keyboard,以便顯示正確的焦點視覺效果。 這表示如果您在呼叫FocusState.Programmatic (FocusState.Programmatic) 之後檢查 FocusState 屬性的值,FocusState 屬性的值會是Pointer或Keyboard。
在針對 Windows 8 編譯但執行于 Windows 8.1 的應用程式中,會保留Windows 8行為。 FocusState 屬性值為 程式設計 ,並顯示鍵盤焦點視覺效果。
注意
繼承自 ItemsControl的類別,例如 ListBox 和 AutoSuggestBox,不會傳播 FocusState 屬性。 它們一律會 傳回 Unfocused。 透過 RoutedEventArgs.OriginalSource存取正確的值。