FocusManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供一組靜態方法、附加屬性和事件,以判斷並設定焦點範圍,並在範圍內設定可焦點化的項目。
public ref class FocusManager abstract sealed
public static class FocusManager
type FocusManager = class
Public Class FocusManager
- 繼承
-
FocusManager
備註
在 Windows Presentation Foundation (WPF) 有兩個關於焦點的概念:鍵盤焦點和邏輯焦點。
鍵盤焦點與目前接收鍵盤輸入的項目有關。 鍵盤焦點只能有一個專案。 具有鍵盤焦點的這個項目已 IsKeyboardFocused 設定為 true
。
Keyboard.FocusedElement 會傳回具有鍵盤焦點的專案。
邏輯焦點與 FocusManager.FocusedElement 特定焦點範圍內的 有關。
焦點範圍是一個容器元素,可追蹤其範圍內。FocusManager.FocusedElement 根據預設,類別 Window 是焦點範圍,如同 Menu、 ContextMenu和 ToolBar 類別。 焦點範圍的項目已 IsFocusScope 設定為 true
。
邏輯焦點可以有多個元素,但單一焦點範圍內只能有一個具有邏輯焦點的專案。 具有邏輯焦點的專案不一定具有鍵盤焦點,但具有鍵盤焦點的專案會有邏輯焦點。 可以在焦點範圍內定義焦點範圍。 在此情況下,父焦點範圍和子焦點範圍都可以有 FocusManager.FocusedElement。
下列案例說明 WPF 應用程式中具有 的 WindowTextBox 鍵盤焦點和邏輯焦點如何變更,以及 Menu 具有 MenuItem的 。 當鍵盤焦點從 TextBox 變更為 MenuItem時,會 TextBox 失去鍵盤焦點,但會保留焦點範圍的邏輯焦點 Window 。 會 MenuItem 取得鍵盤焦點,並取得焦點範圍的邏輯焦點 Menu 。 當鍵盤焦點回到根 Window目錄時,具有邏輯焦點的焦點範圍中的 Window 元素會取得鍵盤焦點,在此案例中為 TextBox。 TextBox現在具有鍵盤焦點和邏輯焦點。 會 MenuItem 失去鍵盤焦點,但會保留焦點範圍的邏輯焦點 Menu 。
、 ToolBarMenu與 ContextMenu 預設Window值IsFocusScope為 true
。
欄位
FocusedElementProperty |
識別 FocusedElement 附加屬性。 |
GotFocusEvent |
識別 GotFocus 附加事件。 |
IsFocusScopeProperty |
識別 IsFocusScope 附加屬性。 |
LostFocusEvent |
識別 LostFocus 附加事件。 |
附加屬性
FocusedElement |
判斷附加這個屬性的項目是否擁有邏輯焦點。 |
IsFocusScope |
判斷附加這個屬性的項目是否為焦點範圍。 |
方法
AddGotFocusHandler(DependencyObject, RoutedEventHandler) |
加入 GotFocus 附加事件的處理常式。 |
AddLostFocusHandler(DependencyObject, RoutedEventHandler) |
加入 LostFocus 附加事件的處理常式。 |
GetFocusedElement(DependencyObject) |
取得指定焦點範圍內擁有邏輯焦點的項目。 |
GetFocusScope(DependencyObject) |
判斷指定的項目之最接近的祖系,這個項目會將 IsFocusScope 設定為 |
GetIsFocusScope(DependencyObject) |
判斷指定的 DependencyObject 是否為焦點範圍。 |
RemoveGotFocusHandler(DependencyObject, RoutedEventHandler) |
移除 GotFocus 附加事件的處理常式。 |
RemoveLostFocusHandler(DependencyObject, RoutedEventHandler) |
移除 LostFocus 附加事件的處理常式。 |
SetFocusedElement(DependencyObject, IInputElement) |
在指定項目上設定邏輯焦點。 |
SetIsFocusScope(DependencyObject, Boolean) |
將指定的 DependencyObject 設定為焦點範圍。 |
附加事件
GotFocus |
當項目取得焦點時發生。 |
LostFocus |
在項目失去焦點時發生。 |