Dela via


Hanterare

.NET Multi-platform App UI (.NET MAUI) tillhandahåller en samling plattformsoberoende kontroller som kan användas för att visa data, initiera åtgärder, indikera aktivitet, visa samlingar, välja data med mera. Varje kontroll har en gränssnittsrepresentation som abstraherar kontrollen. Plattformsoberoende kontroller som implementerar dessa gränssnitt kallas virtuella vyer. -hanterare mappa dessa virtuella vyer till kontroller på varje plattform, som kallas inbyggda vyer. Hanterare ansvarar också för att instansiera den underliggande interna vyn och mappa api:et för plattformsoberoende kontroll till api:et för intern vy. I iOS mappar till exempel en hanterare en .NET MAUI-Button till en iOS-UIButton. På Android mappas Button till en MaterialButton:

Knapphanterararkitektur.

.NET MAUI-hanterare nås via deras kontrollspecifika gränssnitt, till exempel IButton för en Button. Detta förhindrar att plattformsoberoende kontroll måste referera till dess hanterare och att hanteraren måste referera till plattformsoberoende kontroll.

Varje hanterarklass exponerar den interna vyn för plattformsoberoende kontroll via dess PlatformView egenskap. Den här egenskapen kan nås för att ange inbyggda vyegenskaper, anropa interna vymetoder och prenumerera på interna vyhändelser. Dessutom exponeras, via dess egenskap VirtualView, den plattformsoberoende kontroll som implementeras av hanteraren.

När du skapar en plattformsoberoende kontroll vars implementering tillhandahålls på varje plattform av inbyggda vyer bör du implementera en hanterare som mappar api:et för plattformsoberoende kontroll till API:erna för intern vy. Mer information finns i Skapa anpassade kontroller med hanterare.

Du kan också anpassa hanterare för att öka utseendet och beteendet för befintliga plattformsoberoende kontroller utöver den anpassning som är möjlig via kontrollens API. Den här hanteraranpassningen ändrar de inbyggda vyerna för plattformsoberoende kontroll. Hanterare är globala och anpassning av en hanterare för en kontroll resulterar i att alla kontroller av samma typ anpassas i din app. Mer information finns i Anpassa .NET MAUI-kontroller med hanterare.

Kartografer

Ett nyckelbegrepp för .NET MAUI-hanterare är mappare. Varje hanterare tillhandahåller vanligtvis en egenskapsmappare, och ibland en kommandomappare, som mappar plattformsoberoende kontrollens API till den interna vyns API.

En egenskapsmappare definierar vilka åtgärder som ska utföras när en egenskapsändring sker i plattformsoberoende kontroll. Det är en Dictionary som kopplar plattformsoberoende kontrollegenskaper till deras associerade åtgärder. Varje plattformshanterare tillhandahåller sedan implementeringar av åtgärderna, som manipulerar api:et för den interna vyn. Detta säkerställer att när en egenskap anges på en kontroll som är plattformsoberoende, uppdateras den underliggande ursprungliga vyn efter behov.

En kommandomappare definierar vilka åtgärder som ska utföras när plattformsoberoende kontroll skickar kommandon till inbyggda vyer. De liknar egenskapskartläggare, men möjliggör att ytterligare data kan överföras. Ett kommando i den här kontexten innebär inte en ICommand implementering. I stället är ett kommando bara en instruktion, och eventuellt dess data, som skickas till en intern vy. Kommandomapparen är en Dictionary som mappar den plattformsoberoende kontrollens kommandon till sina associerade åtgärder. Varje hanterare tillhandahåller sedan implementeringar av åtgärderna, som manipulerar api:et för den interna vyn. Detta säkerställer att när en plattformsoberoende kontroll skickar ett kommando till den interna vyn uppdateras den interna vyn efter behov. När en ScrollView till exempel rullas använder ScrollViewHandler en kommandomappare för att anropa en åtgärd som accepterar ett rullningspositionsargument. Åtgärden instruerar sedan den underliggande inbyggda vyn att rulla till den positionen.

Fördelen med att använda mappare för att uppdatera interna vyer är att inbyggda vyer kan frikopplas från plattformsoberoende kontroller. Detta tar bort behovet av inbyggda vyer för att prenumerera på och avbryta prenumerationen på plattformsoberoende kontrollhändelser. Det möjliggör också enkel anpassning eftersom mappare kan ändras utan underklassificering.

Livscykel för hanterare

Alla hanterarbaserade .NET MAUI-kontroller stöder två livscykelhändelser för hanterare:

  • HandlerChanging genereras när en ny hanterare ska skapas för en plattformsoberoende kontroll och när en befintlig hanterare är på väg att tas bort från en plattformsoberoende kontroll. Det HandlerChangingEventArgs objekt som medföljer den här händelsen har NewHandler och OldHandler egenskaper av typen IElementHandler. När egenskapen NewHandler inte är nullanger händelsen att en ny hanterare håller på att skapas för en plattformsoberoende kontroll. När egenskapen OldHandler inte är nullanger händelsen att den befintliga interna kontrollen är på väg att tas bort från plattformsoberoende kontroll, och därför bör inbyggda händelser kopplas från och annan rensning utföras.
  • HandlerChanged aktiveras när hanteraren för en plattformsoberoende kontroll har skapats. Den här händelsen anger att den interna kontrollen som implementerar plattformsoberoende kontroll är tillgänglig och att alla egenskapsvärden som anges på plattformsoberoende kontroll har tillämpats på den interna kontrollen.

Obs

Händelsen HandlerChanging aktiveras på en plattformsoberoende kontroll före HandlerChanged händelsen.

Utöver dessa händelser har varje plattformsoberoende kontroll också en åsidosättningsbar OnHandlerChanging metod som anropas när händelsen HandlerChanging aktiveras och en OnHandlerChanged metod som anropas när HandlerChanged händelsen utlöses.

Visa hanterare

I följande tabell visas de typer som implementerar vyer i .NET MAUI:

Utsikt Gränssnitt Handler Egenskapsmappare Kommandomappare
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

Sidhantörer

I följande tabell visas de typer som implementerar sidor i .NET MAUI:

Sida Android-hanterare iOS/Mac Catalyst-hanterare Windowshanterare Egenskapsmappare Kommandomappare
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