Podgląd zdarzeń

Zdarzenia w wersji zapoznawczej, znane także jako zdarzenia tunelowania, są zdarzeniami, w których kierunek trasy jest kierowany z katalogu głównego aplikacji do elementu, który wywołał zdarzenie i jest raportowany 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, jak aplikacje lub składniki powinny je obsłużyć, a także przypadki, w których można utworzyć zdarzenia podglądu w niestandardowych składnikach lub klasach.

Podgląd zdarzeń i danych wejściowych

W przypadku obsługi zdarzeń w wersji zapoznawczej ogólnie rzecz biorąc należy zachować ostrożność w zakresie oznaczania zdarzeń obsłużonych w danych zdarzenia. Obsługa zdarzenia w wersji zapoznawczej na dowolnym elemencie innym niż element, który go wywołał (element, który jest raportowany jako źródło w danych zdarzenia), ma wpływ na niedostarczenie elementu do obsługi zdarzenia, którego pochodzi. Czasami jest to pożądany wynik, szczególnie w przypadku, gdy elementy, które znajdują się w relacji w ramach składowej formantu.

W przypadku zdarzeń wejściowych w programie zdarzenia w wersji zapoznawczej współużytkują także wystąpienia danych zdarzeń z równoważnym zdarzeniem propagacji. Jeśli używasz procedury obsługi klasy zdarzeń w wersji zapoznawczej do oznaczania obsłużonego zdarzenia wejściowego, procedura obsługi propagacji klasy zdarzeń wejściowych nie zostanie wywołana. Lub, jeśli używasz procedury obsługi wystąpienia zdarzenia w wersji zapoznawczej do oznaczania obsłużonego zdarzenia, programy obsługi dla zdarzenia propagacji nie będą zwykle wywoływane. Obsługę klas lub obsługę wystąpień można zarejestrować lub dołączyć do opcji, która ma zostać wywołana, 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 odnoszących się do nich zdarzeń w wersji zapoznawczej , zobacz Oznaczanie zdarzeń kierowanych jako obsłużone i obsługa klas.

Praca nad pomijaniem zdarzeń przez kontrolki

Jeden scenariusz, w którym często używane są zdarzenia w wersji zapoznawczej, jest przeznaczony do obsługi kontroli złożonej dla zdarzeń wejściowych. Czasami autor kontrolki pomija pewne zdarzenia pochodzące z ich kontroli, prawdopodobnie w celu zastąpienia zdarzenia zdefiniowanego przez składnik, które zawiera więcej informacji lub sugeruje bardziej szczegółowe zachowanie. Na przykład, Windows Presentation Foundation (WPF) Button pomija i tworzy MouseLeftButtonDown MouseRightButtonDown zdarzenia zgłoszone przez Button element lub jego elementy złożone, aby przechwycić mysz i podnieść Click zdarzenie, które jest zawsze wywoływane przez Button sam siebie. Zdarzenie i jego dane nadal kontynuują działanie, ale ponieważ Button oznaczenie danych zdarzenia jako Handled , tylko programy obsługi dla zdarzenia, które wskazują, że powinny działać w handledEventsToo przypadku, są wywoływane. Jeśli inne elementy w odniesieniu do katalogu głównego aplikacji nadal chciały obsłużyć zdarzenie pomijane przez kontrolkę, jedną alternatywą jest dołączenie programów obsługi w kodzie, które handledEventsToo określono jako true . Jednak często prostszym sposobem jest zmiana kierunku routingu, który przeprowadzisz, aby był odpowiednikiem podglądu zdarzenia wejściowego. Na przykład, jeśli formant zostanie pominięty MouseLeftButtonDown , spróbuj dołączyć procedurę obsługi dla PreviewMouseLeftButtonDown zamiany. Ta technika działa tylko dla zdarzeń wejściowych elementu podstawowego, takich jak MouseLeftButtonDown . Te zdarzenia wejściowe używają par tunelu/bąbelków, podnoszenia obu zdarzeń i udostępniania danych zdarzenia.

Każda z tych technik ma efekty uboczne lub ograniczenia. Efektem ubocznym obsługi zdarzenia wersji zapoznawczej jest to, że obsługa zdarzenia w tym punkcie może wyłączyć procedury obsługi, które oczekują na obsłużenie zdarzenia propagacji. w związku z tym ograniczenie jest zwykle niedobrym pomysłem oznaczać, że zdarzenie jest obsługiwane, gdy nadal znajduje się w części w wersji zapoznawczej trasy. Ograniczenie handledEventsToo techniki polega na tym, że nie można określić handledEventsToo procedury obsługi XAML jako atrybutu, należy zarejestrować procedurę obsługi zdarzeń w kodzie po uzyskaniu odwołania do obiektu do elementu, do którego ma zostać dołączony program obsługi.

Zobacz też