Sdílet prostřednictvím


Manipulátoři

.NET Multi-platform App UI (.NET MAUI) poskytuje kolekci multiplatformních ovládacích prvků, které lze použít k zobrazení dat, inicializovat akce, indikovat aktivitu, zobrazovat kolekce, vybrat data a další. Každý ovládací prvek má reprezentaci rozhraní, která abstrahuje ovládací prvek. Multiplatformní ovládací prvky, které implementují tato rozhraní, se označují jako virtuální zobrazení. Tyto obslužné rutiny mapují tato virtuální zobrazení na ovládací prvky na jednotlivých platformách, které se označují jako nativní zobrazení. Obslužné rutiny nesou odpovědnost také za instanciaci základního nativního zobrazení a za mapování rozhraní API pro ovládání napříč platformami na nativní rozhraní API zobrazení. Například obslužná funkce v iOS mapuje .NET MAUI Button na iOS UIButton. V Androidu se Button mapuje na MaterialButton:

Architektura obslužné rutiny tlačítka.

Obslužné rutiny .NET MAUI jsou přístupné prostřednictvím jejich rozhraní specifického pro řízení, například IButton pro Button. Tím se zabrání tomu, aby křížově-platformní ovládací prvek musel odkazovat na svého handlera, a handler musel odkazovat na křížově-platformní ovládací prvek.

Každá třída obslužné rutiny zveřejňuje nativní zobrazení pro řízení napříč platformami prostřednictvím své PlatformView vlastnosti. Tato vlastnost je přístupná k nastavení nativních vlastností zobrazení, vyvolání nativních metod zobrazení a přihlášení k odběru událostí nativního zobrazení. Kromě toho je multiplatformní ovládací prvek implementovaný obslužnou rutinou zpřístupněn prostřednictvím jeho vlastnosti VirtualView.

Při vytváření ovládacího prvku napříč platformami, jehož implementace je na každé platformě zajišťována pomocí nativních zobrazení, byste měli implementovat zpracovatel, který mapuje API ovládacího prvku napříč platformami na nativní API zobrazení. Další informace najdete v tématu Vytvoření vlastních ovládacích prvků pomocí obslužných rutin.

Obslužné rutiny můžete také přizpůsobit, abyste rozšířili vzhled a chování existujících ovládacích prvků pro různé platformy nad rámec přizpůsobení, které je možné prostřednictvím rozhraní API ovládacího prvku. Tato obslužná rutina upraví nativní zobrazení pro řízení napříč platformami. Obslužné rutiny jsou globální a přizpůsobení obslužné rutiny ovládacího prvku způsobí přizpůsobení všech ovládacích prvků stejného typu v aplikaci. Další informace najdete v tématu Přizpůsobení ovládacích prvků .NET MAUI pomocí obslužných rutin.

Mapeři

Klíčovým konceptem obslužných rutin .NET MAUI jsou mapovače. Každá obslužná rutina obvykle poskytuje mapovač vlastnostía někdy mapovač příkazů, který mapuje rozhraní API ovládacího prvku napříč platformami na rozhraní API nativního zobrazení.

Mapovač vlastností definuje, jaké akce se mají provést, když dojde ke změně vlastnosti v ovládacím prvku pro různé platformy. Jedná se o Dictionary, která mapuje vlastnosti ovládacího prvku napříč platformami na přidružené akce. Každá obslužná rutina platformy pak poskytuje implementace akcí, které manipulují s nativním rozhraním API pro zobrazení. Tím se zajistí, že když je vlastnost nastavena v ovládacím prvku pro různé platformy, základní nativní zobrazení se podle potřeby aktualizuje.

Mapovač příkazů definuje, jaké akce se mají provést, když ovládací prvek pro různé platformy odesílá příkazy do nativních zobrazení. Jsou podobné mapovačům vlastností, ale umožňují předání dalších dat. Příkaz v tomto kontextu neznamená implementaci ICommand. Místo toho je příkazem pouze instrukce a volitelně i její data, která se odesílají do nativního zobrazení. Mapovač příkazů je Dictionary, který přiřazuje příkaz křížově platformního ovládacího prvku k přidruženým akcím. Každá obslužná rutina pak poskytuje implementace akcí, které manipulují s nativním rozhraním API pro zobrazení. Tím se zajistí, že když multiplatformní ovládací prvek odešle příkaz do nativního zobrazení, nativní zobrazení se podle potřeby aktualizuje. Například když se posune ScrollView, ScrollViewHandler použije mapovač příkazů k vyvolání akce, která přijímá argument scrollovací pozice. Akce pak dává pokyn nativnímu zobrazení, aby se posunulo na toto místo.

Výhodou použití mapovačů k aktualizaci nativních zobrazení je, že nativní zobrazení je možné oddělit od ovládacích prvků pro různé platformy. Tím se odebere potřeba nativních zobrazení k přihlášení k odběru a odhlášení odběru událostí řízení napříč platformami. Umožňuje také snadné přizpůsobení, protože mapovače je možné upravovat bez podtřídy.

Životní cyklus obslužné rutiny

Všechny ovládací prvky .NET MAUI založené na obslužné rutině podporují dvě události životního cyklu obslužné rutiny:

  • HandlerChanging je vyvolána v případě, že se chystá vytvořit nová obslužná rutina pro řízení napříč platformami a kdy se má existující obslužná rutina odebrat z ovládacího prvku pro různé platformy. Objekt HandlerChangingEventArgs, který doprovází tuto událost, má NewHandler a OldHandler vlastnosti typu IElementHandler. Pokud vlastnost NewHandler není null, událost naznačuje, že se chystá vytvořit nový zpracovatel pro ovládací prvek napříč platformami. Pokud vlastnost OldHandler není null, událost naznačuje, že stávající nativní ovládací prvek má být odebrán z multiplatformového ovládacího prvku, a proto by všechny nativní události měly být odpojeny a mělo by být provedeno další vyčištění.
  • HandlerChanged je vyvolána po vytvoření obslužné rutiny pro řízení napříč platformami. Tato událost označuje, že nativní ovládací prvek, který implementuje multiplatformní řízení, je k dispozici a všechny hodnoty vlastností nastavené na řízení napříč platformami byly použity na nativní ovládací prvek.

Poznámka

Událost HandlerChanging je vyvolána na víceplatformovém ovládacím prvku před událostí HandlerChanged.

Kromě těchto událostí má každý multiplatformní ovládací prvek také přepisovatelnou OnHandlerChanging metodu, která se vyvolá při vyvolání HandlerChanging události, a OnHandlerChanged metodu, která se vyvolá při vyvolání HandlerChanged události.

Zobrazit obslužné moduly

Následující tabulka uvádí typy, které implementují zobrazení v rozhraní .NET MAUI:

Zobrazit Rozhraní Obslužná funkce Mapování vlastností Mapovač příkazů
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

Obslužné rutiny stránky

Následující tabulka uvádí typy, které implementují stránky v .NET MAUI:

Stránka Handler pro Android Obslužná rutina iOS/Mac Catalyst Obslužná rutina Windows Mapovač vlastností Mapovač příkazů
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