Aracılığıyla paylaş


EventManager.RegisterClassHandler Yöntem

Tanım

Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.

Aşırı Yüklemeler

RegisterClassHandler(Type, RoutedEvent, Delegate)

Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Belirli bir yönlendirilmiş olay için, olay verilerinin zaten işlenmiş olarak işaretlendiği olayları işleme seçeneğiyle bir sınıf işleyicisi kaydeder.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder.

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 belirten sınıfın türü.

routedEvent
RoutedEvent

İşlenmek üzere olayın yönlendirilmiş olay tanımlayıcısı.

handler
Delegate

Sınıf işleyicisi uygulamasına başvuru.

Örnekler

Aşağıdaki örnek, çağrısı RegisterClassHandleriçin PreviewMouseRightButtonDownEventbir işleyici ekler.

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ş olay yedekleme ile uygulanan ekli olaylar da dahil olmak üzere yönlendirilen olaylar için kullanılabilen bir özelliktir. Sınıf işleyicisi, sınıfın tüm örnekleri için var olan statik işleyici gibidir. İşleyici statik olduğundan, örnek özelliklerini doğrudan bir sınıf işleyicisi ile değiştiremezsiniz, ancak parametreler ve/veya olay verileri aracılığıyla sender örneklere erişebilirsiniz.

Sınıf işleyicileri örnek işleyicilerinden önce çağrılır. Olayı işlenmiş olarak işaretleme davranışına sahip bir sınıf işleyicisi uygulayabilirsiniz. Bu nedenle, örnek işleyicileri özellikle işlenen olaylar için kaydedilmediği sürece sınıf tarafından işlenen bir olay için örnek işleyicileri çağrılmaz.

WPF temel öğe olaylarının çoğu sınıf işleme sanal yöntemleri sağlar. Temel sınıfları devralan sınıflarda bu yöntemleri geçersiz kılarak, statik oluşturucularda çağırmadan RegisterClassHandler sınıf işleme uygulayabilirsiniz. Bu sınıf işleme yöntemleri genellikle giriş olayları için vardır ve "Açık" ile başlayan ve işlenen sınıfın adıyla biten adlara sahiptir.

Sınıf işleme hakkında daha fazla bilgi için bkz . Yönlendirilen Olayları İşlenmiş Olarak İşaretleme ve Sınıf İşleme.

Bu imza kullanılarak, sınıf işleyicileri yalnızca işlenmeyen olaylara yanıt olarak çağrılacak şekilde kaydedilir. Ayrıca, olay bağımsız değişkenleri işlendi olarak işaretlenmiş olsa bile, imzasını handledEventsToo kullanarak RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) ve olarak ayarlanmış şekilde çağırmak için sınıf işleyicilerini truekaydedebilirsiniz.

Şunlara uygulanır

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Belirli bir yönlendirilmiş olay için, olay verilerinin zaten işlenmiş olarak işaretlendiği olayları işleme seçeneğiyle bir sınıf işleyicisi kaydeder.

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 belirten sınıfın türü.

routedEvent
RoutedEvent

İşlenmek üzere olayın yönlendirilmiş olay tanımlayıcısı.

handler
Delegate

Sınıf işleyicisi uygulamasına başvuru.

handledEventsToo
Boolean

true yönlendirilen olayın bağımsız değişkenleri işlendi olarak işaretlenmiş olsa bile bu sınıf işleyicisini çağırmak için; false İşleyiciyi işaretlenen herhangi bir olayda çağırmama varsayılan davranışını korumak için.

Açıklamalar

Sınıf işleme, yönlendirilmiş olay yedekleme ile uygulanan ekli olaylar da dahil olmak üzere yönlendirilen olaylar için kullanılabilen bir özelliktir. Sınıf işleyicisi, sınıfın tüm örnekleri için var olan statik işleyici gibidir. İşleyici statik olduğundan, örnek özelliklerini doğrudan bir sınıf işleyicisi ile değiştiremezsiniz, ancak parametreler ve/veya olay verileri aracılığıyla sender örneklere erişebilirsiniz.

Sınıf işleyicileri örnek işleyicilerinden önce çağrılır. Olayı işlenmiş olarak işaretleme davranışına sahip bir sınıf işleyicisi uygulayabilirsiniz. Bu nedenle, örnek işleyicileri özellikle işlenen olaylar için kaydedilmediği sürece sınıf tarafından işlenen bir olay için örnek işleyicileri çağrılmaz.

WPF temel öğe olaylarının çoğu sınıf işleme sanal yöntemleri sağlar. Temel sınıfları devralan sınıflarda bu yöntemleri geçersiz kılarak, statik oluşturucularda çağırmadan RegisterClassHandler sınıf işleme uygulayabilirsiniz. Bu sınıf işleme yöntemleri genellikle giriş olayları için vardır ve "Açık" ile başlayan ve işlenen sınıfın adıyla biten adlara sahiptir.

Sınıf işleme hakkında daha fazla bilgi için bkz . Yönlendirilen Olayları İşlenmiş Olarak İşaretleme ve Sınıf İşleme.

Bu imza kullanılarak, sınıf işleyicileri olarak ayarlanarak handledEventsToo işlenen olaylar üzerine çağrılacak şekilde truekaydedilebilir. Genel olarak, bunu yalnızca geçici olarak çözmeye çalıştığınız bilinen bir işleme sorunu varsa (fare veya klavye olaylarından giriş sistemi işleme gibi) yapmanız gerekir.

Şunlara uygulanır