Önizleme Olayları

Tünel olayları olarak da bilinen önizleme olayları, yolun yönünün uygulama kökünden olayı yükselten öğeye doğru gittiği ve olay verilerinde kaynak olarak bildirildiği yönlendirilen olaylardır. Tüm olay senaryoları önizleme olaylarını desteklemez veya gerektirmez; bu konuda önizleme olaylarının mevcut olduğu durumlar, uygulamaların veya bileşenlerin bunları nasıl işlemesi gerektiği ve özel bileşenlerde veya sınıflarda önizleme olayları oluşturmanın uygun olabileceği durumlar açıklanmaktadır.

Önizleme Olayları ve Giriş

Önizleme olaylarını genel olarak işlerken, olay verilerinde işlenen olayları işaretleme konusunda dikkatli olun. Bir Preview olayını tetikleyen öğe dışındaki herhangi bir öğe üzerinde işleme (olay verilerinde kaynak olarak bildirilen öğe) bir öğeye, kaynağı olan olayı işleme fırsatı sağlamama etkisine sahiptir. Bazen bu, özellikle söz konusu öğelerin bir denetimin bileşimi içindeki ilişkilerde mevcut olması durumunda istenen sonuç olur.

Özellikle giriş olayları için Önizleme olayları, olay veri örneklerini eşdeğer kabarcıklama olayıyla da paylaşır. İşlenen giriş olayını işaretlemek için bir Preview olay sınıfı işleyicisi kullanırsanız, kabarcık oluşturma giriş olay sınıfı işleyicisi çağrılmayacak. Öte yandan, işlenen olayı işaretlemek için bir Önizleme olay örneği işleyicisi kullanırsanız, kabarcık olayı işleyicileri genellikle çağrılmayacak. Sınıf işleyicileri veya örnek işleyicileri, olay işlendi olarak işaretlense bile çağrılacak bir seçenekle kaydedilebilir veya eklenebilir, ancak bu teknik yaygın olarak kullanılmaz.

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

Denetimler Tarafından Olay Gizlemeyi Geçici Olarak Çözme

Önizleme olaylarının yaygın olarak kullanıldığı senaryolardan biri, giriş olaylarının bileşik denetim işlemesine yöneliktir. Bazen, denetimin yazarı, daha fazla bilgi taşıyan veya daha belirli bir davranışa işaret eden bileşen tanımlı bir olayı değiştirmek için belirli bir olayın kendi denetiminden kaynaklandığını bastırır. Örneğin, bir Windows Presentation Foundation (WPF), Button fareyi yakalama ve MouseRightButtonDown her zaman kendisi tarafından tetiklenen bir Click olayı tetikleme lehine veya bileşik öğeleri tarafından ButtonButton tetiklenen olayları bastırır MouseLeftButtonDown ve kabarcıklar. Olay ve verileri yol boyunca devam eder, ancak olay verilerini olarak HandledişaretlediğindenButton, yalnızca olay için özellikle olayda handledEventsToo işlem yapması gerektiğini belirten işleyiciler çağrılır. Uygulamanızın köküne yönelik diğer öğeler denetimden gizlenen bir olayı işleme fırsatı istiyorduysa, bunun bir alternatifi olarak belirtilen truekoda handledEventsToo işleyiciler eklemektir. Ancak genellikle daha basit bir teknik, işlediğiniz yönlendirme yönünü bir giriş olayının Önizleme eşdeğeri olacak şekilde değiştirmektir. Örneğin, bir denetim bunun MouseLeftButtonDownyerine bir işleyici PreviewMouseLeftButtonDown eklemeyi deneyin. Bu teknik yalnızca gibi MouseLeftButtonDowntemel öğe giriş olayları için çalışır. Bu giriş olayları tünel/kabarcık çiftlerini kullanır, her iki olayı da oluşturur ve olay verilerini paylaşır.

Bu tekniklerin her birinin yan etkileri veya sınırlamaları vardır. Önizleme olayını işlemenin yan etkisi, bu noktada olayı işlemenin kabarcık olayını işlemeyi bekleyen işleyicileri devre dışı bırakabileceğidir ve bu nedenle sınırlama, yolun Önizleme bölümündeyken işlenen olayı işaretlemenin genellikle iyi bir fikir olmamasıdır. Tekniğin handledEventsToo sınırlaması, XAML'de bir işleyiciyi öznitelik olarak belirtememenizdir handledEventsToo ; işleyicinin eklendiği öğeye bir nesne başvurusu aldıktan sonra olay işleyicisini koda kaydetmeniz gerekir.

Ayrıca bkz.