Obsługa zdarzeń Visual Basic oraz WPF

W szczególności dla języka microsoft Visual Basic .NET można użyć słowa kluczowego specyficznego dla języka, aby skojarzyć procedury obsługi zdarzeń z wystąpieniami, zamiast dołączać procedury obsługi zdarzeń z atrybutami lub za pomocą Handles AddHandler metody . Jednak technika dołączania programów obsługi do wystąpień ma pewne ograniczenia, ponieważ składnia nie obsługuje niektórych określonych funkcji zdarzeń trasowane Handles Handles systemu WPF zdarzeń.

Używanie "dojść" w aplikacji WPF

Programy obsługi zdarzeń, które są połączone z wystąpieniami i zdarzeniami z , muszą być zdefiniowane w częściowej deklaracji klasy wystąpienia, co jest również wymagane w przypadku programów obsługi zdarzeń, które są przypisywane za pośrednictwem wartości atrybutów w Handles elementach. Można określić tylko dla elementu na stronie, który Handles ma wartość właściwości Name (lub zadeklarowaną dyrektywę x:Name). Jest to spowodowane tym, że w programie jest związku z tworzeniem odwołania do wystąpienia niezbędnego do obsługi formatu odwołania Name XAML Instance.Event wymaganego przez Handles składnię. Jedynym elementem, który może być używany dla bez odwołania, jest wystąpienie Handles Name elementu głównego, które definiuje klasę częściową.

Tę samą obsługę można przypisać do wielu elementów, oddzielając odwołania Instance.Event po Handles przecinkami.

Za pomocą polecenia Handles można przypisać więcej niż jedną obsługę do tego samego odwołania Instance.Event. Nie przypisuj żadnej ważności do kolejności, w której programy obsługi są podane w odwołaniu. Należy założyć, że programy obsługi, które obsługują to samo zdarzenie, mogą być wywoływane Handles w dowolnej kolejności.

Aby usunąć program obsługi, który został dodany z Handles w deklaracji , możesz wywołać . RemoveHandler

Możesz użyć polecenia , aby dołączyć programy obsługi dla trasowane zdarzenia, o ile dołączysz programy obsługi do wystąpień, które definiują zdarzenie obsługiwane w Handles tabelach elementów członkowskich. W przypadku zdarzeń trasowane programy obsługi dołączone do programu są zgodne z tym samymi regułami rozsyłania co procedury obsługi dołączone jako atrybuty lub ze wspólnym Handles XAML podpisem . AddHandler Oznacza to, że jeśli zdarzenie jest już oznaczone jako obsłużone (właściwość w danych zdarzenia to ), procedury obsługi dołączone do klasy nie są wywoływane w odpowiedzi na Handled True to wystąpienie Handles zdarzenia. Zdarzenie może być oznaczone jako obsługiwane przez procedury obsługi wystąpień w innym elemencie trasy lub przez klasę obsługą bieżącego elementu lub wcześniejszych elementów wzdłuż trasy. W przypadku zdarzeń wejściowych, które obsługują zdarzenia sparowanego tunelu/bąbelka, trasa tunelowania może oznaczać obsługę pary zdarzeń. Aby uzyskać więcej informacji o zdarzeniach trasowane, zobacz Routed Events Overview ( Omówienie zdarzeń tras).

Ograniczenia "dojść" dodawania programów obsługi

Handles nie może odwoływać się do programów obsługi dla dołączonych zdarzeń. Należy użyć metody dostępu dla tego dołączonego zdarzenia lub atrybutów zdarzenia add typename.eventname w pliku XAML . Aby uzyskać szczegółowe informacje, zobacz Routed Events Overview (Przegląd zdarzeń tras).

W przypadku zdarzeń trasowych można używać tylko do przypisywania programów obsługi dla wystąpień, w których to zdarzenie Handles istnieje w tabeli elementów członkowskich wystąpienia. Jednak w przypadku zdarzeń trasowane ogólnie, element nadrzędny może być odbiornikiem dla zdarzenia z elementów nadrzędnych, nawet jeśli element nadrzędny nie ma tego zdarzenia w jego tabeli elementów członkowskich. W składni atrybutów można określić to za pomocą formularza atrybutu typename.membername, który kwalifikuje typ, który faktycznie definiuje zdarzenie, które ma być obsługiwane. Na przykład element nadrzędny (bez zdefiniowanego zdarzenia) może nasłuchiwać zdarzeń kliknięcia przycisku, przypisując obsługę atrybutów Page Click w postaci Button.Click . Nie Handles obsługuje jednak formularza typename.membername, ponieważ musi obsługiwać formularz Instance.Event, który powoduje konflikt. Aby uzyskać szczegółowe informacje, zobacz Routed Events Overview (Przegląd zdarzeń tras).

Handles nie może dołączyć programów obsługi wywoływanych dla zdarzeń, które są już oznaczone jako obsługiwane. Zamiast tego należy użyć kodu i wywołać handledEventsToo przeciążenie metody AddHandler(RoutedEvent, Delegate, Boolean) .

Uwaga

Nie używaj składni w kodzie Visual Basic w przypadku określenia procedury obsługi zdarzeń dla tego samego zdarzenia Handles w języku XAML. W takim przypadku program obsługi zdarzeń jest wywoływany dwukrotnie.

Implementowanie funkcji "Dojścia" w WPF

Podczas kompilowania strony plik pośredni deklaruje odwołania do każdego elementu na stronie, który ma zestaw właściwości Extensible Application Markup Language (XAML) Friend WithEvents Name (lub zadeklarowaną dyrektywę x:Name). Każde nazwane wystąpienie jest potencjalnie elementem, który można przypisać do procedury obsługi za pośrednictwem elementu Handles .

Uwaga

W Visual Studio IntelliSense może pokazać uzupełnianie, dla których elementów są dostępne dla odwołania Handles na stronie. Jednak może to potrwać jeden przebieg kompilacji, aby plik pośredni mógł wypełnić wszystkie Friends odwołania.

Zobacz też