Podgląd zdarzeń

Zdarzenia podglądu, nazywane również zdarzeniami tunelowania, są kierowane zdarzenia, w których kierunek trasy jest przenoszony z katalogu głównego aplikacji do elementu, który zgłosił zdarzenie i jest zgłaszany jako źródło w danych zdarzenia. Nie wszystkie scenariusze zdarzeń obsługują lub wymagają zdarzeń w wersji zapoznawczej; W tym temacie opisano sytuacje, w których istnieją zdarzenia w wersji zapoznawczej, sposób obsługi aplikacji lub składników oraz przypadki, w których tworzenie zdarzeń w wersji zapoznawczej w niestandardowych składnikach lub klasach może być odpowiednie.

Podgląd zdarzeń i danych wejściowych

Podczas obsługi zdarzeń w wersji zapoznawczej należy zachować ostrożność podczas oznaczania zdarzeń obsługiwanych w danych zdarzenia. Obsługa zdarzenia podglądu dla dowolnego elementu innego niż element, który go podniósł (element, który jest zgłaszany jako źródło w danych zdarzenia) ma wpływ na brak możliwości obsługi zdarzenia, które pochodzi. Czasami jest to pożądany wynik, szczególnie jeśli elementy, o których mowa istnieją w relacjach w ramach komponowania kontrolki.

W przypadku zdarzeń wejściowych zdarzenia w wersji zapoznawczej udostępniają również wystąpienia danych z równoważnym zdarzeniem bubbling. Jeśli używasz procedury obsługi klasy zdarzeń w wersji zapoznawczej do oznaczania obsługiwanego zdarzenia wejściowego, program obsługi klasy zdarzeń wejściowych nie zostanie wywołany. Lub jeśli używasz programu obsługi wystąpienia zdarzeń w wersji zapoznawczej do oznaczania obsłużonego zdarzenia, programy obsługi zdarzenia bubbling nie będą zwykle wywoływane. Programy obsługi klas lub procedury obsługi wystąpień można zarejestrować lub dołączyć z opcją wywoływaną, nawet jeśli zdarzenie jest oznaczone jako obsługiwane, ale ta technika nie jest często używana.

Aby uzyskać więcej informacji na temat obsługi klas i sposobu jej powiązania z zdarzeniami w wersji zapoznawczej, zobacz Oznaczanie zdarzeń trasowanych jako obsługiwane i Obsługa klas.

Obejście pomijania zdarzeń według kontrolek

Jednym ze scenariuszy, w którym zdarzenia w wersji zapoznawczej są często używane, jest obsługa złożonej kontroli zdarzeń wejściowych. Czasami autor kontrolki pomija określone zdarzenie pochodzące z kontrolki, być może w celu zastąpienia zdarzenia zdefiniowanego przez składnik, które niesie ze sobą więcej informacji lub sugeruje bardziej szczegółowe zachowanie. Na przykład windows Presentation Foundation (WPF) Button pomija MouseLeftButtonDown i MouseRightButtonDown bubbling zdarzeń podniesionych przez Button lub jego elementy złożone na rzecz przechwytywania myszy i podnoszenia Click zdarzenia, które jest zawsze wywoływane przez Button siebie. Zdarzenie i jego dane nadal są kontynuowane wzdłuż trasy, ale ponieważ Button oznacza dane zdarzenia jako Handledprogramy obsługi tylko dla zdarzenia, które wyraźnie wskazały, że powinny działać w handledEventsToo przypadku. Jeśli inne elementy do katalogu głównego aplikacji nadal chciały mieć możliwość obsługi zdarzeń pomijanych przez kontrolkę, jedną alternatywą jest dołączenie procedur obsługi w kodzie handledEventsToo określonym jako true. Jednak często prostszą techniką jest zmiana obsługiwanego kierunku routingu na odpowiednik podglądu zdarzenia wejściowego. Jeśli na przykład kontrolka pomija MouseLeftButtonDownelement , spróbuj dołączyć program obsługi.PreviewMouseLeftButtonDown Ta technika działa tylko w przypadku zdarzeń wejściowych elementu podstawowego, takich jak MouseLeftButtonDown. Te zdarzenia wejściowe używają par tunelu/bąbelków, zgłaszają zarówno zdarzenia, jak i udostępniają dane zdarzenia.

Każda z tych technik ma skutki uboczne lub ograniczenia. Skutkiem ubocznym obsługi zdarzenia w wersji zapoznawczej jest to, że obsługa zdarzenia w tym momencie może wyłączyć programy obsługi, które oczekują obsługi zdarzenia bubbling, a zatem ograniczenie polega na tym, że zwykle nie jest dobrym pomysłem, aby oznaczyć zdarzenie obsługiwane, gdy nadal znajduje się w części zapoznawczej trasy. handledEventsToo Ograniczeniem techniki jest to, że nie można określić handledEventsToo programu obsługi w języku XAML jako atrybutu, należy zarejestrować program obsługi zdarzeń w kodzie po uzyskaniu odwołania do obiektu, w którym ma zostać dołączony program obsługi.

Zobacz też