Önizleme Olayları

Tünel olayları olarak da bilinen önizleme olayları, rotanın yönünün uygulama kökünden olayı yükselten öğeye doğru ilerdiği ve olay verilerinde kaynak olarak raporlandığı yönlendiren 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çıklanmıştır.

Olayları ve Girişi Önizleme

Önizleme olaylarını genel olarak ele aken, olay verisinde işlenmesine neden olan olayları işaretleme konusunda dikkatli olun. Bir Önizleme olayı, onu yükselten öğe (olay verisinde kaynak olarak bildirilen öğe) dışında herhangi bir öğede işlemenin, bir öğeye kaynağı olan olayı işleme fırsatı sağlamama etkisi vardır. Bazen bu, özellikle de söz konusu öğelerin bir denetimin bir arada olduğu ilişkilerde mevcutsa istenen sonuçtur.

Özellikle giriş olayları için, Önizleme olayları aynı zamanda eşdeğer bu ayrıcalama olayıyla olay verisi örneklerini paylaşır. İşleyici giriş olayı işaretlemek için bir Önizleme olay sınıfı işleyicisi kullanırsanız, giriş olay sınıfı işleyicisi çağrılamaz. Veya, işleyicisi olayı işaretlemek için bir Önizleme olay örneği işleyicisi kullanırsanız, bu event için işleyiciler genellikle çağrılmaz. Sınıf işleyicileri veya örnek işleyicileri, olay işlendi olarak işaretlenmiş olsa bile çağrılma seçeneğiyle kaydedebilir veya iliştirebilir, ancak bu teknik yaygın olarak kullanılmaz.

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

Denetimler Tarafından Olay Gizleme ile Çalışma

Önizleme olaylarının yaygın olarak kullanılan senaryolarından biri, giriş olaylarının bileşik denetim işlemesidir. Bazen denetimin yazarı, daha fazla bilgi taşıyan veya daha belirli bir davranışa ima eden bileşen tanımlı bir olayın yerini almak için belirli bir olayın denetimden kaynaklanan bir olayı bastırıyor olabilir. Örneğin, bir Windows Presentation Foundation (WPF), farenin yakalanması ve her zaman kendisi tarafından bir olaynın ortaya çıkarılması için veya bileşik öğeleri tarafından ortaya çıkarılmış olayları bastırıyor ve ButtonMouseLeftButtonDownMouseRightButtonDown burdur. ButtonClickButton Olay ve verileri yol boyunca devam eder, ancak olay verilerini olarak işaretleyeneler, yalnızca olayda hareket edeceklerini özellikle belirten olay ButtonHandled işleyicileri handledEventsToo çağrılır. Uygulamanın köküne doğru diğer öğeler yine de denetimden gizlenen bir olayı işlemek için bir fırsat istediyse, alternatif bir alternatif olarak belirtilen kodda handledEventsToo işleyicileri true eklemektir. Ancak genellikle daha basit bir teknik, işleyilen yönlendirme yönünü, giriş olayı önizleme eşdeğeri olacak şekilde değiştirmektir. Örneğin, bir denetim bastırıyorsa, MouseLeftButtonDown bunun yerine için bir işleyici eklemeyi PreviewMouseLeftButtonDown deneyin. Bu teknik yalnızca gibi temel öğe giriş olayları için MouseLeftButtonDown çalışır. Bu giriş olayları tünel/kabarcık çiftleri kullanır, her iki olayı da meydana gelir ve olay verilerini paylaşır.

Bu tekniklerin her biri yan etkilere veya sınırlamalara sahiptir. Önizleme olayı işlemenin yan etkisi, bu noktada olayın işlenmesinin budizli olayı işlemeyi beklenilen işleyicileri devre dışı bırakmasıdır ve bu nedenle sınırlama genellikle olayın işleyicisi hala yolu önizleme bölümündeyken işaretlemenin iyi bir fikir olmadığını gösterir. Tekniğin sınırlaması, XAML'de bir işleyiciyi öznitelik olarak belirtemezseniz, işleyicinin ekli olduğu öğeye bir nesne başvurusu edindikten sonra kodda olay handledEventsToohandledEventsToo işleyicisini kaydetmelisiniz.

Ayrıca bkz.