EventManager.RegisterClassHandler Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirli bir yönlendirilmiş olay için sınıf işleyicisi kaydeder.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| RegisterClassHandler(Type, RoutedEvent, Delegate) |
Belirli bir yönlendirilmiş olay için sınıf işleyicisi kaydeder. |
| RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder ve olay verilerinin zaten işlenmiş olarak işaretlendiği olayları işleme seçeneğiyle birlikte. |
RegisterClassHandler(Type, RoutedEvent, Delegate)
Belirli bir yönlendirilmiş olay için 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şleme bildiriminde bulunan 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ı PreviewMouseRightButtonDownEventiçin RegisterClassHandlerbir 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 yedeklemesi ile uygulanan ekli olaylar da dahil olmak üzere yönlendirilmiş olaylar için kullanılabilen bir özelliktir. Sınıf işleyicisi, sınıfın tüm örnekleri için var olan statik bir işleyici gibidir. İşleyici statik olduğundan, örnek özelliklerini doğrudan bir sınıf işleyicisiyle değiştiremezsiniz, ancak parametrelere 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 özel olarak 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 mevcuttur ve "Açık" ile başlayan ve işlenen olayı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 çağırmak için sınıf işleyicilerini kaydedebilirsiniz.RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)handledEventsTootrue
Şunlara uygulanır
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
Belirli bir yönlendirilmiş olay için bir sınıf işleyicisi kaydeder ve olay verilerinin zaten işlenmiş olarak işaretlendiği olayları işleme seçeneğiyle birlikte.
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şleme bildiriminde bulunan 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 İşlenmiş herhangi bir olayda işleyiciyi çağırmama varsayılan davranışını korumak için.
Açıklamalar
Sınıf işleme, yönlendirilmiş olay yedeklemesi ile uygulanan ekli olaylar da dahil olmak üzere yönlendirilmiş olaylar için kullanılabilen bir özelliktir. Sınıf işleyicisi, sınıfın tüm örnekleri için var olan statik bir işleyici gibidir. İşleyici statik olduğundan, örnek özelliklerini doğrudan bir sınıf işleyicisiyle değiştiremezsiniz, ancak parametrelere 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 özel olarak 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 mevcuttur ve "Açık" ile başlayan ve işlenen olayı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. Genellikle, bunu yalnızca fare veya klavye olaylarından giriş sistemi işleme gibi geçici olarak çözmeye çalıştığınız bilinen bir işleme sorunu varsa yapmanız gerekir.