Gestionnaires
L’interface utilisateur d’application multiplateforme .NET (.NET MAUI) fournit une collection de contrôles multiplateformes qui peuvent être utilisés pour afficher des données, lancer des actions, indiquer l’activité, afficher des regroupements, sélectionner des données, etc. Chaque contrôle a une représentation d’interface qui extrait le contrôle. Les contrôles multiplateformes qui implémentent ces interfaces sont appelés vues virtuelles. Les gestionnaires mappent ces vues virtuelles aux contrôles sur chaque plateforme, appelées vues natives. Les gestionnaires sont également chargés d’instancier la vue native sous-jacente et de mapper l’API de contrôle multiplateforme à l’API de vue native. Par exemple, sur iOS, un gestionnaire mappe un MAUI Button .NET à un iOS UIButton
. Sur Android, il Button est mappé à un AppCompatButton
:
Les gestionnaires .NET MAUI sont accessibles via leur interface spécifique au contrôle, par IButton
exemple pour un Button. Cela évite le contrôle multiplateforme qui doit référencer son gestionnaire et le gestionnaire qui doit référencer le contrôle multiplateforme.
Chaque classe de gestionnaire expose la vue native du contrôle multiplateforme via sa PlatformView
propriété. Cette propriété est accessible pour définir des propriétés de vue native, appeler des méthodes d’affichage natif et s’abonner à des événements d’affichage natif. En outre, le contrôle multiplateforme implémenté par le gestionnaire est exposé via sa VirtualView
propriété.
Lorsque vous créez un contrôle multiplateforme dont l’implémentation est fournie sur chaque plateforme par des vues natives, vous devez implémenter un gestionnaire qui mappe l’API de contrôle multiplateforme aux API de vue native. Pour plus d’informations, consultez Créer des contrôles personnalisés avec des gestionnaires.
Vous pouvez également personnaliser des gestionnaires pour augmenter l’apparence et le comportement des contrôles multiplateformes existants au-delà de la personnalisation possible via l’API du contrôle. Cette personnalisation du gestionnaire modifie les vues natives du contrôle multiplateforme. Les gestionnaires sont globaux et la personnalisation d’un gestionnaire pour un contrôle entraîne la personnalisation de tous les contrôles du même type dans votre application. Pour plus d’informations, consultez Personnaliser les contrôles .NET MAUI avec des gestionnaires.
Cartographes
Un concept clé des gestionnaires MAUI .NET est des mappeurs. Chaque gestionnaire fournit généralement un mappeur de propriétés, et parfois un mappeur de commandes, qui mappe l’API du contrôle multiplateforme à l’API de la vue native.
Un mappeur de propriétés définit les actions à entreprendre lorsqu’une modification de propriété se produit dans le contrôle multiplateforme. Il s’agit d’un Dictionary
mappage des propriétés du contrôle multiplateforme à leurs actions associées. Chaque gestionnaire de plateforme fournit ensuite des implémentations des actions, qui manipulent l’API de vue native. Cela garantit que lorsqu’une propriété est définie sur un contrôle multiplateforme, la vue native sous-jacente est mise à jour selon les besoins.
Un mappeur de commandes définit les actions à effectuer lorsque le contrôle multiplateforme envoie des commandes à des vues natives. Ils sont similaires aux mappeurs de propriétés, mais permettent de transmettre des données supplémentaires. Une commande dans ce contexte ne signifie pas une ICommand implémentation. Au lieu de cela, une commande est simplement une instruction, et éventuellement ses données, qui sont envoyées à une vue native. Le mappeur de commandes est un Dictionary
mappeur qui mappe la commande du contrôle multiplateforme à ses actions associées. Chaque gestionnaire fournit ensuite des implémentations des actions, qui manipulent l’API de vue native. Cela garantit que lorsqu’un contrôle multiplateforme envoie une commande à sa vue native, la vue native est mise à jour en fonction des besoins. Par exemple, lorsqu’un défilement ScrollView est fait, il ScrollViewHandler
utilise un mappeur de commandes pour appeler une action qui accepte un argument de position de défilement. L’action indique ensuite à la vue native sous-jacente de faire défiler vers cette position.
L’avantage d’utiliser des mappeurs pour mettre à jour des vues natives est que les vues natives peuvent être découplées des contrôles multiplateformes. Cela supprime la nécessité pour les vues natives de s’abonner aux événements de contrôle multiplateforme et de se désabonner. Il permet également une personnalisation facile, car les mappeurs peuvent être modifiés sans sous-classe.
Cycle de vie du gestionnaire
Tous les contrôles .NET MAUI basés sur un gestionnaire prennent en charge deux événements de cycle de vie de gestionnaire :
HandlerChanging
est déclenché lorsqu’un nouveau gestionnaire est sur le point d’être créé pour un contrôle multiplateforme et lorsqu’un gestionnaire existant est sur le point d’être supprimé d’un contrôle multiplateforme. ObjetHandlerChangingEventArgs
qui accompagne cet événement aNewHandler
etOldHandler
propriétés, de typeIElementHandler
. Lorsque laNewHandler
propriété n’est pasnull
, l’événement indique qu’un nouveau gestionnaire est sur le point d’être créé pour un contrôle multiplateforme. Lorsque laOldHandler
propriété n’est pasnull
, l’événement indique que le contrôle natif existant est sur le point d’être supprimé du contrôle multiplateforme, et par conséquent, tous les événements natifs doivent être non câblés et d’autres propre up effectuées.HandlerChanged
est déclenché après la création du gestionnaire d’un contrôle multiplateforme. Cet événement indique que le contrôle natif qui implémente le contrôle multiplateforme est disponible, et toutes les valeurs de propriété définies sur le contrôle multiplateforme ont été appliquées au contrôle natif.
Remarque
L’événement HandlerChanging
est déclenché sur un contrôle multiplateforme avant l’événement HandlerChanged
.
En plus de ces événements, chaque contrôle multiplateforme a également une méthode substituable OnHandlerChanging
appelée lorsque l’événement HandlerChanging
est déclenché et une OnHandlerChanged
méthode appelée lorsque l’événement HandlerChanged
est déclenché.
Afficher les gestionnaires
Le tableau suivant répertorie les types qui implémentent des vues dans .NET MAUI :
Gestionnaires de pages
Le tableau suivant répertorie les types qui implémentent des pages dans .NET MAUI :
Page | Gestionnaire Android | Gestionnaire de catalyseur iOS/Mac | Gestionnaire Windows | Mappeur de propriétés | Mappeur de commandes |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | Téléphone FlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |