handler
.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 Ansichten bezeichnet. Handler ordnen diese virtuellen Ansichten Steuerelementen auf jeder Plattform zu, die als systemeigene Ansichten bezeichnet 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. Beispielsweise ordnet ein Handler unter iOS ein .NET MAUI Button einem iOS UIButton
zu. Unter Android ist die Button Zuordnung zu einem AppCompatButton
:
Auf .NET MAUI-Handler wird über ihre steuerelementspezifische Schnittstelle zugegriffen, z IButton
. B. für eine Button. Dadurch wird verhindert, dass das plattformübergreifende Steuerelement auf den Handler verweisen muss, und der Handler muss auf das plattformübergreifende Steuerelement verweisen.
Jede Handlerklasse macht die systemeigene Ansicht für das plattformübergreifende Steuerelement über seine 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 Handleranpassung ändert die systemeigenen 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.
Mappers
Ein Schlüsselkonzept von .NET MAUI-Handlern ist Mapper. Jeder Handler stellt in der Regel einen Eigenschaftenzuordnungsprogramm und manchmal eine Befehlszuordnung bereit, die die API des plattformübergreifenden Steuerelements der api der nativen Ansicht zuordnet.
Eine Eigenschaftenzuordnung definiert, welche Aktionen ausgeführt werden sollen, wenn eine Eigenschaftsänderung im plattformübergreifenden Steuerelement erfolgt. Es ist ein Dictionary
Element, das die Eigenschaften des plattformübergreifenden Steuerelements den zugehörigen Aktionen zuordnet. Jeder Plattformhandler stellt dann Implementierungen der Aktionen bereit, die die systemeigene Ansichts-API bearbeiten. Dadurch wird sichergestellt, dass die zugrunde liegende native Ansicht bei Bedarf aktualisiert wird, wenn eine Eigenschaft für ein plattformübergreifendes Steuerelement festgelegt wird.
Eine Befehlszuordnung definiert, welche Aktionen ausgeführt werden sollen, wenn das plattformübergreifende Steuerelement Befehle an systemeigene Ansichten sendet. Sie ähneln Eigenschaftenzuordnungen, ermöglichen jedoch die Übergabe zusätzlicher Daten. Ein Befehl in diesem Kontext bedeutet ICommand keine Implementierung. Stattdessen ist ein Befehl nur eine Anweisung und optional seine Daten, die an eine systemeigene Ansicht gesendet werden. Die Befehlszuordnung ist eine Dictionary
, die den Befehl des plattformübergreifenden Steuerelements den zugehörigen Aktionen zuordnet. Jeder Handler stellt dann Implementierungen der Aktionen bereit, die die systemeigene Ansichts-API bearbeiten. Dadurch wird sichergestellt, dass die systemeigene Ansicht aktualisiert wird, wenn ein plattformübergreifendes Steuerelement einen Befehl an die systemeigene Ansicht sendet. Wenn z. B. ein ScrollView Bildlauf durchgeführt wird, wird eine ScrollViewHandler
Befehlszuordnung verwendet, um eine Aktion aufzurufen, die ein Bildlaufpositionsargument akzeptiert. Die Aktion weist dann die zugrunde liegende systemeigene Ansicht an, zu dieser Position zu scrollen.
Der Vorteil der Verwendung von Mappern zum Aktualisieren nativer Ansichten besteht darin, dass systemeigene 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 Unterklassen geändert 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, hatNewHandler
undOldHandler
Eigenschaften vom TypIElementHandler
. Wenn dieNewHandler
Eigenschaft nichtnull
vorhanden ist, gibt das Ereignis an, dass ein neuer Handler für ein plattformübergreifendes Steuerelement erstellt werden soll. Wenn dieOldHandler
Eigenschaft nichtnull
ist, gibt das Ereignis an, dass das vorhandene systemeigene Steuerelement aus dem plattformübergreifenden Steuerelement entfernt wird, und daher sollten alle systemeigenen Ereignisse entwirt und andere sauber up ausgefü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.
Hinweis
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 beim Auslösen des HandlerChanging
Ereignisses aufgerufen wird, und eine OnHandlerChanged
Methode, die aufgerufen wird, wenn das HandlerChanged
Ereignis ausgelöst wird.
Anzeigen von Handlern
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 | Befehlszuordnung |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | Telefon FlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |