Partager via


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 UIButtoniOS. 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’objet HandlerChangingEventArgs qui accompagne cet événement a des propriétés NewHandler et OldHandler, de type IElementHandler. Lorsque la propriété NewHandler n’est pas null, 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 pas null, 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 :

Vue Interface Gestionnaire Mappeur de propriétés Mappeur de commandes
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

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