EventManager.RegisterClassHandler Yöntem

Tanım

Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.Registers a class handler for a particular routed event.

Aşırı Yüklemeler

RegisterClassHandler(Type, RoutedEvent, Delegate)

Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.Registers a class handler for a particular routed event.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Olay verilerinin zaten işlenmiş olarak işaretlendiğinden olayları işleme seçeneğiyle birlikte belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.Registers a class handler for a particular routed event, with the option to handle events where event data is already marked handled.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.Registers a class handler for a particular routed event.

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)

Parametreler

classType
Type

Sınıf işlemeyi bildiren sınıfın türü.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

İşlenecek etkinliğin yönlendirilmiş olay tanımlayıcısı.The routed event identifier of the event to handle.

handler
Delegate

Sınıf işleyicisi uygulamasına bir başvuru.A reference to the class handler implementation.

Örnekler

Aşağıdaki örnek, çağrısı için bir işleyici ekler PreviewMouseLeftButtonDown RegisterClassHandler .The following example adds a handler for PreviewMouseLeftButtonDown, calling 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

Açıklamalar

Sınıf işleme, yönlendirilmiş olaylar için kullanılabilen, yönlendirilmiş olay yedeklemele uygulanan ekli olaylar dahil olmak üzere bir özelliktir.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Sınıf işleyicisi, sınıfının tüm örnekleri için var olan statik bir işleyici gibidir.A class handler is like a static handler that exists for all instances of the class. İşleyici statik olduğundan, örnek özelliklerini doğrudan bir sınıf işleyicisiyle değiştiremezsiniz, ancak sender parametre ve/veya olay verileri aracılığıyla örneklere erişebilirsiniz.Because the handler is static, you cannot change instance properties directly with a class handler, but you can access instances through the sender parameter and/or the event data.

Sınıf işleyicileri, örnek işleyicilerinden önce çağrılır.Class handlers are invoked before instance handlers. Olayı işlenmiş olarak işaretleme davranışına sahip bir sınıf işleyicisi uygulayabilirsiniz.You can implement a class handler that has the behavior of marking the event as handled. Bu nedenle, örnek işleyicileri işlenmiş olaylara özel olarak kaydettirilemediği takdirde, sınıf işlenmiş bir olay için örnek işleyicileri çağrılmaz.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

WPFWPFTemel öğe olaylarının birçoğu, sınıf işleme sanal yöntemleri sağlar.Many of the WPFWPF base element events provide class handling virtual methods. Temel sınıfları miras alan sınıflarda bu yöntemleri geçersiz kılarak, statik oluşturucularda çağrılmadan sınıf işleme uygulayabilirsiniz RegisterClassHandler .By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Bu sınıf işleme yöntemleri genellikle giriş olayları için mevcuttur ve "on" ile başlayan adlara sahiptir ve işlenen olayın adı ile biter.These class handling methods typically exist for input events and have names that start with "On" and end with the name of the event being class handled.

Sınıf işleme hakkında daha fazla bilgi için bkz. yönlendirilmiş olayları işlenmiş olarak işaretleme ve sınıf işleme.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Bu imzayı kullanarak, sınıf işleyicileri yalnızca işlenmemiş olaylara yanıt olarak çağrılacak şekilde kaydedilir.Using this signature, class handlers will be registered to invoke only in response to unhandled events. Ayrıca, olarak ayarlanmış olarak, imza kullanılarak olay bağımsız değişkenleri işlenmiş olarak işaretlenmiş olsa bile çağırmak için sınıf işleyicilerini kaydedebilirsiniz RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) handledEventsToo true .You can also register class handlers to invoke even if the event arguments are marked handled, by using the RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature, with handledEventsToo set to true.

Şunlara uygulanır

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Olay verilerinin zaten işlenmiş olarak işaretlendiğinden olayları işleme seçeneğiyle birlikte belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.Registers a class handler for a particular routed event, with the option to handle events where event data is already marked handled.

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)

Parametreler

classType
Type

Sınıf işlemeyi bildiren sınıfın türü.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

İşlenecek etkinliğin yönlendirilmiş olay tanımlayıcısı.The routed event identifier of the event to handle.

handler
Delegate

Sınıf işleyicisi uygulamasına bir başvuru.A reference to the class handler implementation.

handledEventsToo
Boolean

true yönlendirilmiş olayın bağımsız değişkenleri işlenmiş olarak işaretlenmiş olsa bile, bu sınıf işleyicisini çağırmak için. false herhangi bir işaretlenmiş olay üzerinde işleyiciyi çağırmayan varsayılan davranışı sürdürmek için.true to invoke this class handler even if arguments of the routed event have been marked as handled; false to retain the default behavior of not invoking the handler on any marked-handled event.

Açıklamalar

Sınıf işleme, yönlendirilmiş olaylar için kullanılabilen, yönlendirilmiş olay yedeklemele uygulanan ekli olaylar dahil olmak üzere bir özelliktir.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Sınıf işleyicisi, sınıfının tüm örnekleri için var olan statik bir işleyici gibidir.A class handler is like a static handler that exists for all instances of the class. İşleyici statik olduğundan, örnek özelliklerini doğrudan bir sınıf işleyicisiyle değiştiremezsiniz, ancak sender parametre ve/veya olay verileri aracılığıyla örneklere erişebilirsiniz.Because the handler is static, you cannot change instance properties directly with a class handler, but you can access instances through the sender parameter and/or the event data.

Sınıf işleyicileri, örnek işleyicilerinden önce çağrılır.Class handlers are invoked before instance handlers. Olayı işlenmiş olarak işaretleme davranışına sahip bir sınıf işleyicisi uygulayabilirsiniz.You can implement a class handler that has the behavior of marking the event as handled. Bu nedenle, örnek işleyicileri işlenmiş olaylara özel olarak kaydettirilemediği takdirde, sınıf işlenmiş bir olay için örnek işleyicileri çağrılmaz.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

WPFWPFTemel öğe olaylarının birçoğu, sınıf işleme sanal yöntemleri sağlar.Many of the WPFWPF base element events provide class handling virtual methods. Temel sınıfları miras alan sınıflarda bu yöntemleri geçersiz kılarak, statik oluşturucularda çağrılmadan sınıf işleme uygulayabilirsiniz RegisterClassHandler .By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Bu sınıf işleme yöntemleri genellikle giriş olayları için mevcuttur ve "on" ile başlayan adlara sahiptir ve işlenen olayın adı ile biter.These class handling methods typically exist for input events and have names that start with "On" and end with the name of the event being class handled.

Sınıf işleme hakkında daha fazla bilgi için bkz. yönlendirilmiş olayları işlenmiş olarak işaretleme ve sınıf işleme.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Bu imzayı kullanarak, sınıf işleyicileri işlenmiş olayları daha sonra çağırmak için handledEventsToo olarak ayarlanır true .Using this signature, class handlers can be registered to invoke upon handled events, by setting handledEventsToo set to true. Genellikle, bu işlemi yalnızca, sorunu gidermek için denediğiniz, fare veya klavye olaylarından oluşan giriş sistemi işleme gibi bilinen bir işleme sorunu varsa yapmanız gerekir.Generally, you should do this only if there is a known handling issue you are trying to work around, such as input system handling from mouse or keyboard events.

Şunlara uygulanır