Obsługi
Interfejs użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) udostępnia kolekcję wieloplatformowych kontrolek, które mogą służyć do wyświetlania danych, inicjowania akcji, wskazywania działań, wyświetlania kolekcji, wybierania danych i nie tylko. Każda kontrolka ma reprezentację interfejsu, która abstrahuje kontrolkę. Kontrolki międzyplatformowe, które implementują te interfejsy, są nazywane widokami wirtualnymi. Programy obsługi mapują te widoki wirtualne na kontrolki na każdej platformie, które są nazywane widokami natywnymi. Programy obsługi są również odpowiedzialne za utworzenie wystąpienia bazowego widoku natywnego i mapowanie międzyplatformowego interfejsu API sterowania do interfejsu API widoku natywnego. Na przykład w systemie iOS program obsługi mapuje interfejs MAUI Button platformy .NET na system iOS UIButton
. W systemie Android Button element jest mapowany na element AppCompatButton
:
Dostęp do programów obsługi MAUI platformy .NET jest uzyskiwany za pośrednictwem interfejsu specyficznego dla sterowania, takiego jak IButton
w przypadku elementu Button. Pozwala to uniknąć konieczności odwołowania się do kontrolek międzyplatformowych, a procedura obsługi musi odwoływać się do kontrolki międzyplatformowej.
Każda klasa obsługi uwidacznia widok macierzysty dla kontrolki międzyplatformowej za pośrednictwem jej PlatformView
właściwości. Dostęp do tej właściwości można uzyskać, aby ustawić właściwości widoku natywnego, wywołać metody widoku natywnego i zasubskrybować zdarzenia widoku natywnego. Ponadto kontrolka międzyplatformowa zaimplementowana przez program obsługi jest uwidaczniona za pośrednictwem jego VirtualView
właściwości.
Podczas tworzenia wieloplatformowej kontrolki, której implementacja jest udostępniana na każdej platformie przez widoki natywne, należy zaimplementować procedurę obsługi, która mapuje interfejs API sterowania międzyplatformowego na interfejsy API widoku natywnego. Aby uzyskać więcej informacji, zobacz Tworzenie kontrolek niestandardowych za pomocą procedur obsługi.
Można również dostosować programy obsługi w celu rozszerzenia wyglądu i zachowania istniejących kontrolek międzyplatformowych poza dostosowywanie, które jest możliwe za pośrednictwem interfejsu API kontrolki. To dostosowanie programu obsługi modyfikuje widoki natywne dla kontrolki międzyplatformowej. Programy obsługi są globalne, a dostosowywanie procedury obsługi dla kontrolki spowoduje dostosowanie wszystkich kontrolek tego samego typu w aplikacji. Aby uzyskać więcej informacji, zobacz Dostosowywanie kontrolek .NET MAUI za pomocą procedur obsługi.
Mappers
Kluczową koncepcją procedur obsługi MAUI platformy .NET jest maperów. Każda procedura obsługi zwykle udostępnia maper właściwości, a czasami maper poleceń, który mapuje interfejs API kontrolki międzyplatformowej na interfejs API widoku natywnego.
Maper właściwości definiuje akcje do wykonania w przypadku zmiany właściwości w kontrolce międzyplatformowej. Jest to element Dictionary
, który mapuje właściwości kontrolki międzyplatformowej na skojarzone akcje. Następnie każda procedura obsługi platformy udostępnia implementacje akcji, które manipulują interfejsem API widoku natywnego. Gwarantuje to, że po ustawieniu właściwości na kontrolce międzyplatformowej podstawowy widok macierzysty jest aktualizowany zgodnie z potrzebami.
Maper poleceń definiuje akcje do wykonania, gdy kontrolka międzyplatformowa wysyła polecenia do widoków natywnych. Są one podobne do maperów właściwości, ale umożliwiają przekazywanie dodatkowych danych. Polecenie w tym kontekście nie oznacza implementacji ICommand . Zamiast tego polecenie jest tylko instrukcją i opcjonalnie jej danymi, które są wysyłane do widoku natywnego. Maper poleceń to Dictionary
element, który mapuje polecenie kontrolki międzyplatformowej na skojarzone akcje. Następnie każda procedura obsługi udostępnia implementacje akcji, które manipulują interfejsem API widoku natywnego. Dzięki temu, gdy kontrolka międzyplatformowa wysyła polecenie do widoku natywnego, widok macierzysty zostanie zaktualizowany zgodnie z potrzebami. Na przykład gdy element ScrollView jest przewijany, ScrollViewHandler
maper poleceń używa mapowania poleceń do wywoływania akcji, która akceptuje argument pozycji przewijania. Następnie akcja instruuje podstawowy widok macierzysty, aby przewijał się do tej pozycji.
Zaletą używania maperów do aktualizowania widoków natywnych jest możliwość oddzielenia widoków natywnych od kontrolek międzyplatformowych. Eliminuje to konieczność subskrybowania i anulowania subskrypcji zdarzeń kontroli międzyplatformowych dla widoków natywnych. Umożliwia również łatwe dostosowywanie, ponieważ mapatory można modyfikować bez podklas.
Cykl życia programu obsługi
Wszystkie kontrolki MAUI oparte na programie obsługi platformy .NET obsługują dwa zdarzenia cyklu życia programu obsługi:
HandlerChanging
program jest zgłaszany, gdy zostanie utworzona nowa procedura obsługi dla kontrolki międzyplatformowej, a gdy istniejąca procedura obsługi zostanie usunięta z kontrolki międzyplatformowej. ObiektHandlerChangingEventArgs
, który towarzyszy temu zdarzeniu, maNewHandler
właściwości iOldHandler
o typieIElementHandler
.NewHandler
Gdy właściwość nienull
jest , zdarzenie wskazuje, że nowa procedura obsługi ma zostać utworzona dla kontrolki międzyplatformowej.OldHandler
Gdy właściwość nienull
ma wartości , zdarzenie wskazuje, że istniejąca kontrolka natywna ma zostać usunięta z kontrolki międzyplatformowej, dlatego wszystkie zdarzenia natywne powinny być nie wirowane i inne wykonywane oczyszczanie.HandlerChanged
jest wywoływany po utworzeniu programu obsługi dla kontrolki międzyplatformowej. To zdarzenie wskazuje, że kontrolka natywna, która implementuje kontrolkę międzyplatformową, jest dostępna, a wszystkie wartości właściwości ustawione na kontrolce międzyplatformowej zostały zastosowane do kontrolki natywnej.
Uwaga
Zdarzenie HandlerChanging
jest wywoływane w kontrolce międzyplatformowej przed zdarzeniem HandlerChanged
.
Oprócz tych zdarzeń każda kontrolka międzyplatformowa ma również metodę zastępowalną OnHandlerChanging
wywoływaną podczas HandlerChanging
wywoływanego zdarzenia oraz OnHandlerChanged
metodę wywoływaną podczas wywoływanego HandlerChanged
zdarzenia.
Wyświetl programy obsługi
W poniższej tabeli wymieniono typy implementujące widoki w programie .NET MAUI:
Programy obsługi stron
W poniższej tabeli wymieniono typy implementujące strony w programie .NET MAUI:
Strona | Procedura obsługi systemu Android | Program obsługi katalizatora systemu iOS/Mac | Procedura obsługi systemu Windows | Maper właściwości | Maper poleceń |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | Telefon FlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |