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:

Button handler architecture.

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. Objet HandlerChangingEventArgs qui accompagne cet événement a NewHandler et OldHandler propriétés, de type IElementHandler. Lorsque la NewHandler propriété 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 OldHandler propriété 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 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 :

Affichage Interface Handler 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, , TextButtonMapperMapper 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 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