Sterowniki
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 .
Handlery mapują te widoki wirtualne na kontrolki każdej platformy, które są znane jako widoki natywne. Obsługiwacze są również odpowiedzialni za utworzenie bazowego widoku natywnego oraz mapowanie międzyplatformowego interfejsu API kontrolki do natywnego interfejsu API widoku. Na przykład w systemie iOS obsługujący mapuje .NET MAUI Button na iOS UIButton
. W systemie Android Button odpowiada MaterialButton
Dostęp do obsług MAUI platformy .NET uzyskuje się za pośrednictwem interfejsu specyficznego dla kontroli, takiego jak IButton
dla Button. Pozwala to uniknąć konieczności odwoływania się przez kontrolkę międzyplatformową do procedury obsługi oraz procedury obsługi do kontrolki międzyplatformowej.
Każda klasa obsługi udostępnia widok natywny dla kontrolki międzyplatformowej za pośrednictwem swojej właściwości PlatformView
. 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 widoczna za pośrednictwem jej właściwości VirtualView
.
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 niestandardowych kontrolek z obsługiwanymi przez nie procesami.
Można również dostosować procedury obsługi w celu rozszerzenia wyglądu i zachowania istniejących kontrolek międzyplatformowych ponad to, co jest możliwe dzięki interfejsowi API kontrolki. To dostosowanie obsługi modyfikuje natywne widoki kontrolki międzyplatformowej. Procedury obsługi są globalne, a dostosowywanie procedury obsługi na rzecz kontrolki spowoduje dostosowanie w aplikacji wszystkich kontrolek tego samego typu. Aby uzyskać więcej informacji, zobacz Dostosowywanie kontrolek MAUI platformy .NET za pomocą programów obsługi.
Kartografowie
Kluczową koncepcją w obsłudze MAUI na platformie .NET jest mapper. Każda procedura obsługi zazwyczaj 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 Dictionary
, który mapuje właściwości kontrolki międzyplatformowej do przypisanych im akcji. Następnie każdy obsługiwacz platformy udostępnia implementacje akcji, które manipulują natywnym interfejsem API widoku. Gwarantuje to, że po ustawieniu właściwości na kontrolce międzyplatformowej podstawowy widok macierzysty jest aktualizowany zgodnie z potrzebami.
Maper poleceń określa, jakie działania należy podjąć, gdy element sterujący międzyplatformowy wysyła komendy do widoków natywnych. Są one podobne do mapujących właściwości, ale umożliwiają przekazywanie dodatkowych danych. W tym kontekście rozkaz nie jest równoznaczny z implementacją ICommand. Zamiast tego polecenie jest tylko instrukcją i opcjonalnie jej danymi, które są wysyłane do widoku natywnego. Mapujący polecenia to komponent Dictionary
, który mapuje polecenia kontrolki wieloplatformowej na ich przypisane akcje. Następnie każdy obsługujący 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, kiedy ScrollView jest przewijany, ScrollViewHandler
używa mapowania poleceń do wywołania akcji, która przyjmuje argument dotyczący pozycji przewijania. Następnie akcja instruuje podstawowy widok macierzysty, aby przewinął się do wskazanej 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 dostosowanie, ponieważ mapy można modyfikować bez podklas.
Cykl życia obsługi
Wszystkie kontrolki MAUI oparte na obsługach .NET obsługują dwa zdarzenia cyklu życia obsług.
-
HandlerChanging
jest wywoływana, gdy ma zostać utworzona nowa procedura obsługi dla kontrolki międzyplatformowej, a gdy istniejący program obsługi ma zostać usunięty z kontrolki międzyplatformowej. ObiektHandlerChangingEventArgs
, który towarzyszy temu zdarzeniu, ma właściwościNewHandler
iOldHandler
typuIElementHandler
. Gdy właściwośćNewHandler
nie jestnull
, zdarzenie wskazuje, że zostanie utworzony nowy obsługiwacz dla kontrolki międzyplatformowej. Gdy właściwośćOldHandler
nie jestnull
, zdarzenie wskazuje, że istniejąca kontrolka natywna będzie usunięta z kontrolki międzyplatformowej, a w związku z tym wszystkie zdarzenia natywne powinny zostać odłączone oraz powinny zostać wykonane inne działania porządkowe. -
HandlerChanged
jest wywoływana po utworzeniu programu obsługi dla wieloplatformowej kontrolki. 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.
Notatka
Zdarzenie HandlerChanging
jest wywoływane w kontrolce międzyplatformowej przed zdarzeniem HandlerChanged
.
Oprócz tych zdarzeń każda kontrolka międzyplatformowa ma również zastępowalną metodę OnHandlerChanging
wywoływaną, gdy zdarzenie HandlerChanging
zostanie wywołane, oraz metodę OnHandlerChanged
wywoływaną, gdy zdarzenie HandlerChanged
zostanie wywołane.
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 | Handler Android | Program obsługi katalizatora systemu iOS/Mac | Obsługiwacz Windows | Mapper Nieruchomości | Mapowanie poleceń |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | PhoneFlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |