Udostępnij za pośrednictwem


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

Architektura obsługi przycisków.

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. Obiekt HandlerChangingEventArgs, który towarzyszy temu zdarzeniu, ma właściwości NewHandler i OldHandler typu IElementHandler. Gdy właściwość NewHandler nie jest null, zdarzenie wskazuje, że zostanie utworzony nowy obsługiwacz dla kontrolki międzyplatformowej. Gdy właściwość OldHandler nie jest null, 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:

Widok Interfejs Obsługi Mapowanie właściwości Mapa poleceń
ActivityIndicator IActivityIndicator ActivityIndicatorHandler Mapper CommandMapper
BlazorWebView IBlazorWebView BlazorWebViewHandler BlazorWebViewMapper
Border IBorderView BorderHandler Mapper CommandMapper
BoxView IShapeView, IShape ShapeViewHandler Mapper CommandMapper
Button IButton ButtonHandler ImageButtonMapper, TextButtonMapper, Mapper CommandMapper
CarouselView CarouselViewHandler Mapper
Cell CellRenderer Mapper CommandMapper
CheckBox ICheckBox CheckBoxHandler Mapper CommandMapper
CollectionView CollectionViewHandler <Mapper
ContentView IContentView ContentViewHandler Mapper CommandMapper
DatePicker IDatePicker DatePickerHandler Mapper CommandMapper
Editor IEditor EditorHandler Mapper CommandMapper
Ellipse IShape ShapeViewHandler Mapper CommandMapper
Entry IEntry EntryHandler Mapper CommandMapper
EntryCell EntryCellRenderer Mapper CommandMapper
Frame FrameRenderer Mapper CommandMapper
GraphicsView IGraphicsView GraphicsViewHandler Mapper CommandMapper
Image IImage ImageHandler Mapper CommandMapper
ImageButton IImageButton ImageButtonHandler ImageMapper, Mapper
ImageCell ImageCellRenderer Mapper CommandMapper
IndicatorView IIndicatorView IndicatorViewHandler Mapper CommandMapper
Label ILabel LabelHandler Mapper CommandMapper
Line IShape LineHandler Mapper CommandMapper
ListView ListViewRenderer Mapper CommandMapper
Map IMap MapHandler Mapper CommandMapper
Path IShape PathHandler Mapper CommandMapper
Picker IPicker PickerHandler Mapper CommandMapper
Polygon IShape PolygonHandler Mapper CommandMapper
Polyline IShape PolylineHandler Mapper CommandMapper
ProgressBar IProgress ProgressBarHandler Mapper CommandMapper
RadioButton IRadioButton RadioButtonHandler Mapper CommandMapper
Rectangle IShape RectangleHandler Mapper CommandMapper
RefreshView IRefreshView RefreshViewHandler Mapper CommandMapper
RoundRectangle IShape RoundRectangleHandler Mapper CommandMapper
ScrollView IScrollView ScrollViewHandler Mapper CommandMapper
SearchBar ISearchBar SearchBarHandler Mapper CommandMapper
Slider ISlider SliderHandler Mapper CommandMapper
Stepper IStepper StepperHandler Mapper CommandMapper
SwipeView ISwipeView SwipeViewHandler Mapper CommandMapper
Switch ISwitch SwitchHandler Mapper CommandMapper
SwitchCell SwitchCellRenderer Mapper CommandMapper
TableView TableViewRenderer Mapper CommandMapper
TextCell TextCellRenderer Mapper CommandMapper
TimePicker ITimePicker TimePickerHandler Mapper CommandMapper
ViewCell ViewCellRenderer Mapper CommandMapper
WebView IWebView WebViewHandler Mapper CommandMapper

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