Delen via


Verwerkers

.NET Multi-Platform App UI (.NET MAUI) biedt een verzameling platformoverschrijdende besturingselementen die kunnen worden gebruikt om gegevens weer te geven, acties te starten, activiteiten aan te geven, verzamelingen weer te geven, gegevens te kiezen en meer. Elk bedieningselement heeft een interfaceweergave die het bedieningselement abstract vertegenwoordigt. Platformoverschrijdende besturingselementen die deze interfaces implementeren, worden virtuele weergavengenoemd. Behandelaars wijzen deze virtuele weergaven toe aan besturingselementen op elk platform, die ook wel systeemeigen weergavenworden genoemd. Handlers zijn ook verantwoordelijk voor het instantiëren van de onderliggende systeemeigen weergave en het toewijzen van de platformoverschrijdende besturings-API aan de systeemeigen weergave-API. Op iOS wijst een handler bijvoorbeeld een .NET MAUI-Button toe aan een iOS-UIButton. Op Android wordt de Button gemapt naar een MaterialButton:

knophandlerarchitectuur.

.NET MAUI-handlers zijn benaderbaar via hun controle-specifieke interface, zoals IButton voor een Button. Dit voorkomt dat het platformoverschrijdende besturingselement moet verwijzen naar de handler en dat de handler moet verwijzen naar het platformoverschrijdende besturingselement.

Elke handlerklasse toont de systeemeigen weergave voor het platformoverschrijdende besturingselement via de eigenschap PlatformView. Deze eigenschap kan worden geopend om systeemeigen weergave-eigenschappen in te stellen, systeemeigen weergavemethoden aan te roepen en u te abonneren op systeemeigen weergavegebeurtenissen. Daarnaast wordt het platformoverschrijdende besturingselement dat door de handler wordt geïmplementeerd, beschikbaar gesteld via de eigenschap VirtualView.

Wanneer u een platformoverschrijdend besturingselement maakt waarvan de implementatie op elk platform wordt geleverd door systeemeigen weergaven, moet u een handler implementeren waarmee de platformoverschrijdende besturings-API wordt toegewezen aan de systeemeigen weergave-API's. Zie Aangepaste besturingselementen maken met handlersvoor meer informatie.

U kunt handlers ook aanpassen om het uiterlijk en gedrag van bestaande platformoverschrijdende besturingselementen verder uit te breiden dan de aanpassing die mogelijk is via de API van het besturingselement. Deze handleraanpassing wijzigt de systeemeigen weergaven voor het platformoverschrijdende besturingselement. Afhandelaars zijn algemeen, en het aanpassen van een afhandelaar voor een besturingselement zorgt ervoor dat alle besturingselementen van hetzelfde type in uw app worden aangepast. Zie .NET MAUI-besturingselementen aanpassen met handlersvoor meer informatie.

Kaartmakers

Een belangrijk concept van .NET MAUI handlers zijn de mappers. Elke handler biedt doorgaans een eigenschapstoewijzer, en soms een opdrachttoewijzer, waarmee de API van het platformoverschrijdende besturingselement wordt toegewezen aan de API van de natuurlijke weergave.

Een eigenschapstoewijzing definieert welke acties moeten worden uitgevoerd wanneer een eigenschapswijziging plaatsvindt in het platformoverschrijdende besturingselement. Het is een Dictionary waarmee de eigenschappen van het platformoverschrijdende besturingselement worden toegewezen aan de bijbehorende acties. Elke platformhandler biedt vervolgens implementaties van de acties, waarmee de systeemeigen weergave-API wordt bewerkt. Dit zorgt ervoor dat wanneer een eigenschap is ingesteld op een platformoverschrijdend besturingselement, de onderliggende systeemeigen weergave naar behoefte wordt bijgewerkt.

Een opdrachtomzetter definieert welke acties moeten worden uitgevoerd wanneer de platformonafhankelijke bediening opdrachten naar native weergaven verzendt. Ze zijn vergelijkbaar met eigenschapstoewijzingen, maar zorgen ervoor dat extra gegevens worden doorgegeven. Een opdracht in deze context betekent geen ICommand implementatie. In plaats daarvan is een opdracht slechts een instructie en optioneel de bijbehorende gegevens, die naar een systeemeigen weergave worden verzonden. De commando-mapper is een Dictionary waarmee het commando van het platformoverschrijdende besturingselement wordt toegewezen aan de bijbehorende Acties. Elke handler biedt vervolgens implementaties van de acties, waarmee de systeemeigen weergave-API wordt gemanipuleerd. Dit zorgt ervoor dat wanneer een platformoverschrijdend besturingselement een opdracht naar de systeemeigen weergave verzendt, de systeemeigen weergave naar behoefte wordt bijgewerkt. Wanneer een ScrollView bijvoorbeeld wordt gescrold, gebruikt de ScrollViewHandler een commando-mapper om een actie aan te roepen die een scrollpositie-argument accepteert. Vervolgens instrueert de actie de onderliggende eigen weergave om naar die positie te scrollen.

Het voordeel van het gebruik van mappers om systeemeigen weergaven bij te werken, is dat systeemeigen weergaven kunnen worden losgekoppeld van platformoverschrijdende besturingselementen. Hierdoor hoeven systeemeigen weergaven zich niet langer te abonneren op of af te melden voor platformoverschrijdende controlegebeurtenissen. Het maakt ook eenvoudig aanpassen mogelijk omdat mappers kunnen worden gewijzigd zonder subklassen.

Levenscyclus van handler

Alle handlergebaseerde .NET MAUI-besturingselementen ondersteunen twee handlerlevenscyclusgebeurtenissen:

  • HandlerChanging wordt geactiveerd wanneer een nieuwe handler op het punt staat te worden gemaakt voor een platformoverschrijdend besturingselement en wanneer een bestaande handler op het punt staat te worden verwijderd uit hetzelfde platformoverschrijdende besturingselement. Het HandlerChangingEventArgs-object dat bij deze gebeurtenis hoort, heeft NewHandler- en OldHandler eigenschappen van het type IElementHandler. Wanneer de eigenschap NewHandler niet nullis, geeft de gebeurtenis aan dat er een nieuwe handler op het punt staat te worden gemaakt voor een platformoverschrijdend besturingselement. Wanneer de eigenschap OldHandler niet nullis, geeft de gebeurtenis aan dat het bestaande systeemeigen besturingselement op het punt staat verwijderd te worden uit het platformoverschrijdende besturingselement en daarom moeten alle systeemeigen gebeurtenissen ontkoppeld worden en moet er andere opruiming worden uitgevoerd.
  • HandlerChanged wordt gegenereerd nadat de handler voor een platformoverschrijdend besturingselement is gemaakt. Met deze gebeurtenis wordt aangegeven dat het systeemeigen besturingselement waarmee het platformoverschrijdende besturingselement wordt geïmplementeerd, beschikbaar is en dat alle eigenschapswaarden die zijn ingesteld op het platformoverschrijdende besturingselement, zijn toegepast op het systeemeigen besturingselement.

Notitie

De HandlerChanging gebeurtenis wordt gegenereerd op een platformoverschrijdend besturingselement vóór de HandlerChanged gebeurtenis.

Naast deze gebeurtenissen heeft elk platformoverschrijdend besturingselement ook een overschrijfbare OnHandlerChanging methode die wordt aangeroepen wanneer de HandlerChanging gebeurtenis wordt gegenereerd en een OnHandlerChanged methode die wordt aangeroepen wanneer de HandlerChanged gebeurtenis wordt gegenereerd.

Handlers weergeven

De volgende tabel bevat de typen die weergaven implementeren in .NET MAUI:

Bekijken Schakelvlak Behandelaar Eigenschap Mapper Opdrachtmapper
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

Paginahandlers

De volgende tabel bevat de typen die pagina's implementeren in .NET MAUI:

Bladzijde Android Handler iOS/Mac Catalyst Handler Windows-beheerder Eigenschap Mapper Commando-omzetter
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