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 à des contrôles sur chaque plateforme, appelés 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 Button MAUI .NET à un UIButton
iOS. Sur Android, le Button est mappé à un MaterialButton
:
architecture du gestionnaire de bouton
Les gestionnaires .NET MAUI sont accessibles via l'interface spécifique à chaque contrôle, comme IButton
pour un Button. Cela évite au contrôle multiplateforme de devoir référencer son gestionnaire, et au gestionnaire de devoir référencer le contrôle multiplateforme.
Chaque classe de gestionnaire expose la vue native du contrôle multiplateforme via sa propriété PlatformView
. 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 propriété VirtualView
.
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
qui mappe les 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 à entreprendre 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 implémentation ICommand. 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
qui associe les commandes du contrôle multiplateforme avec leurs 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 ScrollView est fait défiler, l'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 se déplacer vers cette position.
L’avantage d’utiliser mappeurs pour mettre à jour les 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 et de se désabonner des événements de contrôle multiplateforme. 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. L’objetHandlerChangingEventArgs
qui accompagne cet événement a des propriétésNewHandler
etOldHandler
, de typeIElementHandler
. Lorsque la propriétéNewHandler
n’est pasnull
, l’événement indique qu’un nouveau gestionnaire est sur le point d’être créé pour un contrôle multiplateforme. Lorsque la propriétéOldHandler
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 nettoyages effectués. -
HandlerChanged
est déclenché après que le gestionnaire d'un contrôle multiplateforme a été créé. 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.
Note
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 de OnHandlerChanging
substituable appelée lorsque l’événement HandlerChanging
est déclenché et une méthode OnHandlerChanged
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 | PhoneFlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |