EventManager.RegisterClassHandler 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
註冊特定路由事件的類別處理器。
多載
| 名稱 | Description |
|---|---|
| RegisterClassHandler(Type, RoutedEvent, Delegate) |
註冊特定路由事件的類別處理器。 |
| RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
為特定路由事件註冊類別處理器,並可選擇處理已標記已處理事件資料的事件。 |
RegisterClassHandler(Type, RoutedEvent, Delegate)
註冊特定路由事件的類別處理器。
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public static void RegisterClassHandler(Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate)
參數
- classType
- Type
宣告類別處理的類別類型。
- routedEvent
- RoutedEvent
要處理的事件路由事件識別碼。
- handler
- Delegate
這是對類別處理器實作的參考。
範例
以下範例為 ,新增一個 PreviewMouseRightButtonDownEvent處理器,稱為 RegisterClassHandler。
static MyEditContainer()
{
EventManager.RegisterClassHandler(typeof(MyEditContainer), PreviewMouseRightButtonDownEvent, new RoutedEventHandler(LocalOnMouseRightButtonDown));
}
internal static void LocalOnMouseRightButtonDown(object sender, RoutedEventArgs e)
{
MessageBox.Show("this is invoked before the On* class handler on UIElement");
//e.Handled = true; //uncommenting this would cause ONLY the subclass' class handler to respond
}
Shared Sub New()
EventManager.RegisterClassHandler(GetType(MyEditContainer), PreviewMouseRightButtonDownEvent, New RoutedEventHandler(AddressOf LocalOnMouseRightButtonDown))
End Sub
Friend Shared Sub LocalOnMouseRightButtonDown(ByVal sender As Object, ByVal e As RoutedEventArgs)
MessageBox.Show("this is invoked before the On* class handler on UIElement")
'e.Handled = True //uncommenting this would cause ONLY the subclass' class handler to respond
End Sub
備註
類別處理是一項適用於路由事件的功能,包括以路由事件為基礎實作的附加事件。 類別處理器就像是靜態處理器,存在於所有類別實例中。 由於處理器是靜態的,你無法直接用類別處理器更改實例屬性,但可以透過參數和/或事件資料存取實例 sender 。
類別處理器會被呼叫到實例處理器之前。 你可以實作一個類別處理器,讓事件標記為已處理。 因此,除非類別處理事件的實例處理程序專門註冊,否則不會呼叫類別處理事件的處理程序。
許多 WPF 基底元素事件提供類別處理虛擬方法。 透過在繼承基底類別的類別中覆寫這些方法,你可以在不呼叫 RegisterClassHandler 靜態建構子的情況下實作類別處理。 這些類別處理方法通常用於輸入事件,名稱以「On」開頭,以被處理事件名稱結尾。
欲了解更多類別處理資訊,請參閱 「標記路由事件為已處理」及「類別處理」。
使用此簽名,類別處理器將註冊為僅在未處理事件時呼叫。 你也可以註冊 RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) 類別處理器以呼叫,即使事件參數標記為已處理,透過簽章,將 handledEventsToo 設為 true。
適用於
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
為特定路由事件註冊類別處理器,並可選擇處理已標記已處理事件資料的事件。
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public static void RegisterClassHandler(Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate * bool -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)
參數
- classType
- Type
宣告類別處理的類別類型。
- routedEvent
- RoutedEvent
要處理的事件路由事件識別碼。
- handler
- Delegate
這是對類別處理器實作的參考。
- handledEventsToo
- Boolean
true 即使路由事件的參數已被標記為已處理,仍可呼叫此類別處理程序; false 以保留預設行為,即不在任何標記處理事件中呼叫處理器。
備註
類別處理是一項適用於路由事件的功能,包括以路由事件為基礎實作的附加事件。 類別處理器就像是靜態處理器,存在於所有類別實例中。 由於處理器是靜態的,你無法直接用類別處理器更改實例屬性,但可以透過參數和/或事件資料存取實例 sender 。
類別處理器會被呼叫到實例處理器之前。 你可以實作一個類別處理器,讓事件標記為已處理。 因此,除非類別處理事件的實例處理程序專門註冊,否則不會呼叫類別處理事件的處理程序。
許多 WPF 基底元素事件提供類別處理虛擬方法。 透過在繼承基底類別的類別中覆寫這些方法,你可以在不呼叫 RegisterClassHandler 靜態建構子的情況下實作類別處理。 這些類別處理方法通常用於輸入事件,名稱以「On」開頭,以被處理事件名稱結尾。
欲了解更多類別處理資訊,請參閱 「標記路由事件為已處理」及「類別處理」。
利用此簽名,類別處理器可透過將 handledEventsToo 設定 true為 來註冊,在處理事件時呼叫。 一般來說,只有當你想解決已知的處理問題時,才應該這麼做,例如滑鼠或鍵盤事件導致輸入系統的處理。