Bearbeiter
.NET Multi-platform App UI (.NET MAUI) bietet eine Sammlung plattformübergreifender Steuerelemente, die zum Anzeigen von Daten, Initiieren von Aktionen, Anzeigen von Aktivitäten, Anzeigen von Sammlungen, Auswählen von Daten und mehr verwendet werden können. Jedes Steuerelement verfügt über eine Schnittstellendarstellung, die das Steuerelement abstrahiert. Plattformübergreifende Steuerelemente, die diese Schnittstellen implementieren, werden als virtuelle Ansichtenbezeichnet.
Handler ordnen diese virtuellen Ansichten den Steuerelementen auf jeder Plattform zu, die als systemeigene Ansichtenbezeichnet werden. Handler sind auch für die Instanziierung der zugrunde liegenden nativen Ansicht und das Zuordnen der plattformübergreifenden Steuerelement-API zur nativen Ansichts-API verantwortlich. Bei iOS ordnet ein Handler beispielsweise eine .NET MAUI-Button einem iOS-UIButton
zu. Unter Android wird die Button einem MaterialButton
zugeordnet:
Auf .NET MAUI-Handler wird über die steuerelementspezifische Schnittstelle zugegriffen, z. B. IButton
für eine Button. Dies verhindert, dass das plattformübergreifende Steuerelement seinen Handler referenzieren muss und umgekehrt.
Jede Handlerklasse macht die systemeigene Ansicht für das plattformübergreifende Steuerelement über die PlatformView
-Eigenschaft verfügbar. Auf diese Eigenschaft kann zugegriffen werden, um systemeigene Ansichtseigenschaften festzulegen, systemeigene Ansichtsmethoden aufzurufen und systemeigene Ansichtsereignisse zu abonnieren. Darüber hinaus wird das plattformübergreifende Steuerelement, das vom Handler implementiert wird, über seine VirtualView
-Eigenschaft verfügbar gemacht.
Wenn Sie ein plattformübergreifendes Steuerelement erstellen, dessen Implementierung auf jeder Plattform durch systemeigene Ansichten bereitgestellt wird, sollten Sie einen Handler implementieren, der die plattformübergreifende Steuerelement-API den systemeigenen Ansichts-APIs zuordnet. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Steuerelementen mit Handlern.
Sie können Handler auch anpassen, um die Darstellung und das Verhalten vorhandener plattformübergreifender Steuerelemente über die Anpassung hinaus zu erweitern, die über die API des Steuerelements möglich ist. Diese Anpassung des Handlers modifiziert die nativen Ansichten für das plattformübergreifende Steuerelement. Handler sind global und das Anpassen eines Handlers für ein Steuerelement führt dazu, dass alle Steuerelemente desselben Typs in Ihrer App angepasst werden. Weitere Informationen finden Sie unter Anpassen von .NET MAUI-Steuerelementen mit Handlern.
Kartographen
Ein Schlüsselkonzept von .NET MAUI-Handlern sind Mappers. Jeder Handler stellt in der Regel eine Eigenschaften-Zuordnungund manchmal eine Befehlszuordnungbereit, die die API des plattformübergreifenden Steuerelements mit der API der nativen Ansicht abgleicht.
Ein Eigenschaftszuordner bestimmt, welche Aktionen auszuführen sind, wenn eine Eigenschaftsänderung im plattformunabhängigen Steuerelement erfolgt. Es ist eine Dictionary
, die die Eigenschaften des plattformübergreifenden Steuerelements den zugehörigen Aktionen zuordnet. Jeder Plattform-Handler bietet dann Implementierungen der Aktionen, die die native View-API manipulieren. Dadurch wird sichergestellt, dass die zugrunde liegende native Ansicht bei Bedarf aktualisiert wird, wenn eine Eigenschaft für ein plattformübergreifendes Steuerelement festgelegt wird.
Ein -Befehlszuordner definiert, welche Aktionen ausgeführt werden sollen, wenn das plattformübergreifende Kontrollelement Befehle an native Ansichten sendet. Sie ähneln Eigenschaftsabbildungen, ermöglichen jedoch die Übergabe zusätzlicher Daten. Ein Befehl in diesem Kontext bedeutet nicht eine „ICommand Implementierung“. Stattdessen ist ein Befehl nur eine Anweisung und optional seine Daten, die an eine systemeigene Ansicht gesendet werden. Der Befehlsmapper ist eine Dictionary
, die das Kommando des plattformübergreifenden Steuerelements den zugehörigen Aktionen zuordnet. Jeder Handler stellt dann Implementierungen der Aktionen bereit, die die native View-API bearbeiten. Dadurch wird sichergestellt, dass die systemeigene Ansicht aktualisiert wird, wenn ein plattformübergreifendes Steuerelement einen Befehl an die systemeigene Ansicht sendet. Wenn beispielsweise ein ScrollView gescrollt wird, verwendet die ScrollViewHandler
einen Befehlsmapper, um eine Aktion zu initiieren, die eine Bildlaufposition als Argument akzeptiert. Die Aktion weist dann die zugrunde liegende native Ansicht an, zu dieser Position zu scrollen.
Der Vorteil der Verwendung von -Mappern zur Aktualisierung nativer Ansichten besteht darin, dass native Ansichten von plattformübergreifenden Steuerelementen entkoppelt werden können. Dadurch wird die Notwendigkeit für systemeigene Ansichten zum Abonnieren und Abmelden von plattformübergreifenden Steuerelementereignissen entfernt. Es ermöglicht auch eine einfache Anpassung, da Mapper ohne die Erstellung von Unterklassen angepasst werden können.
Handlerlebenszyklus
Alle handlerbasierten .NET MAUI-Steuerelemente unterstützen zwei Handlerlebenszyklusereignisse:
-
HandlerChanging
wird ausgelöst, wenn ein neuer Handler für ein plattformübergreifendes Steuerelement erstellt werden soll und wenn ein vorhandener Handler aus einem plattformübergreifenden Steuerelement entfernt werden soll. DasHandlerChangingEventArgs
-Objekt, das dieses Ereignis begleitet, verfügt über die EigenschaftenNewHandler
undOldHandler
vom TypIElementHandler
. Wenn dieNewHandler
-Eigenschaft nichtnull
ist, gibt das Ereignis an, dass ein neuer Handler für ein plattformübergreifendes Steuerelement erstellt werden soll. Wenn dieOldHandler
Eigenschaft nichtnull
ist, zeigt das Ereignis an, dass das vorhandene systemeigene Steuerelement vom plattformübergreifenden Steuerelement entfernt wird, und dementsprechend sollten alle systemeigenen Ereignisse entfernt und andere Bereinigungen durchgeführt werden. -
HandlerChanged
wird ausgelöst, nachdem der Handler für ein plattformübergreifendes Steuerelement erstellt wurde. Dieses Ereignis gibt an, dass das systemeigene Steuerelement, das das plattformübergreifende Steuerelement implementiert, verfügbar ist und alle auf dem plattformübergreifenden Steuerelement festgelegten Eigenschaftswerte auf das systemeigene Steuerelement angewendet wurden.
Anmerkung
Das HandlerChanging
-Ereignis wird auf einem plattformübergreifenden Steuerelement vor dem HandlerChanged
-Ereignis ausgelöst.
Zusätzlich zu diesen Ereignissen verfügt jedes plattformübergreifende Steuerelement auch über eine überschreibbare OnHandlerChanging
-Methode, die aufgerufen wird, wenn das HandlerChanging
-Ereignis ausgelöst wird, und eine OnHandlerChanged
-Methode, die aufgerufen wird, wenn das HandlerChanged
-Ereignis ausgelöst wird.
Handler anzeigen
In der folgenden Tabelle sind die Typen aufgeführt, die Ansichten in .NET MAUI implementieren:
Seitenhandler
In der folgenden Tabelle sind die Typen aufgeführt, die Seiten in .NET MAUI implementieren:
Seite | Android-Handler | iOS/Mac Catalyst Handler | Windows-Handler | Property Mapper | Befehlszuordnungstool |
---|---|---|---|---|---|
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 |