Gestori
L'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) offre una raccolta di controlli multipiattaforma che possono essere usati per visualizzare i dati, avviare azioni, indicare attività, visualizzare raccolte, selezionare dati e altro ancora. Ogni controllo ha una rappresentazione dell'interfaccia che astrae il controllo. I controlli multipiattaforma che implementano queste interfacce sono noti come visualizzazioni virtuali. I gestori eseguono il mapping di queste visualizzazioni virtuali ai controlli in ogni piattaforma, noti come visualizzazioni native. I gestori sono anche responsabili della creazione di istanze della visualizzazione nativa sottostante e del mapping dell'API di controllo multipiattaforma all'API di visualizzazione nativa. Ad esempio, in iOS un gestore esegue il mapping di una MAUI Button .NET a un iOS UIButton
. In Android, viene eseguito il Button mapping a un oggetto AppCompatButton
:
I gestori MAUI .NET sono accessibili tramite l'interfaccia specifica del controllo, ad esempio IButton
per un oggetto Button. In questo modo, il controllo multipiattaforma deve fare riferimento al relativo gestore e il gestore deve fare riferimento al controllo multipiattaforma.
Ogni classe del gestore espone la visualizzazione nativa per il controllo multipiattaforma tramite la relativa PlatformView
proprietà. È possibile accedere a questa proprietà per impostare le proprietà della visualizzazione nativa, richiamare i metodi di visualizzazione nativa e sottoscrivere eventi di visualizzazione nativa. Inoltre, il controllo multipiattaforma implementato dal gestore viene esposto tramite la relativa VirtualView
proprietà.
Quando si crea un controllo multipiattaforma la cui implementazione viene fornita in ogni piattaforma dalle visualizzazioni native, è necessario implementare un gestore che esegue il mapping dell'API di controllo multipiattaforma alle API di visualizzazione nativa. Per altre informazioni, vedere Creare controlli personalizzati con gestori.
È anche possibile personalizzare i gestori per aumentare l'aspetto e il comportamento dei controlli multipiattaforma esistenti oltre la personalizzazione possibile tramite l'API del controllo. Questa personalizzazione del gestore modifica le visualizzazioni native per il controllo multipiattaforma. I gestori sono globali e la personalizzazione di un gestore per un controllo comporterà la personalizzazione di tutti i controlli dello stesso tipo nell'app. Per altre informazioni, vedere Personalizzare controlli MAUI .NET con gestori.
Mapper
Un concetto chiave di gestori MAUI .NET è il mappingr. Ogni gestore fornisce in genere un mapper di proprietà e talvolta un mapper dei comandi, che esegue il mapping dell'API del controllo multipiattaforma all'API della visualizzazione nativa.
Un mapper di proprietà definisce le azioni da eseguire quando si verifica una modifica di proprietà nel controllo multipiattaforma. Si tratta di un oggetto Dictionary
che esegue il mapping delle proprietà del controllo multipiattaforma alle relative azioni associate. Ogni gestore della piattaforma fornisce quindi implementazioni delle azioni, che modificano l'API di visualizzazione nativa. In questo modo, quando una proprietà viene impostata su un controllo multipiattaforma, la visualizzazione nativa sottostante viene aggiornata in base alle esigenze.
Un mapper di comandi definisce le azioni da eseguire quando il controllo multipiattaforma invia comandi alle visualizzazioni native. Sono simili ai mapping delle proprietà, ma consentono di passare dati aggiuntivi. Un comando in questo contesto non significa un'implementazione ICommand . Un comando è invece solo un'istruzione e, facoltativamente, i dati inviati a una visualizzazione nativa. Il mapper del comando è un Dictionary
oggetto che esegue il mapping del comando del controllo multipiattaforma alle azioni associate. Ogni gestore fornisce quindi implementazioni delle azioni, che modificano l'API di visualizzazione nativa. In questo modo, quando un controllo multipiattaforma invia un comando alla visualizzazione nativa, la visualizzazione nativa viene aggiornata in base alle esigenze. Ad esempio, quando un oggetto ScrollView viene scorrevole, ScrollViewHandler
usa un mapper di comandi per richiamare un'azione che accetta un argomento posizione di scorrimento. L'azione indica quindi alla visualizzazione nativa sottostante di scorrere fino a tale posizione.
Il vantaggio dell'uso dei mapper per aggiornare le visualizzazioni native è che le visualizzazioni native possono essere disaccoppiate dai controlli multipiattaforma. In questo modo viene rimossa la necessità di sottoscrivere le visualizzazioni native e annullare la sottoscrizione agli eventi di controllo multipiattaforma. Consente anche una semplice personalizzazione perché i mapper possono essere modificati senza sottoclasse.
Ciclo di vita del gestore
Tutti i controlli MAUI basati su gestori supportano due eventi del ciclo di vita del gestore:
HandlerChanging
viene generato quando un nuovo gestore sta per essere creato per un controllo multipiattaforma e quando un gestore esistente sta per essere rimosso da un controllo multipiattaforma. L'oggettoHandlerChangingEventArgs
che accompagna questo evento haNewHandler
proprietà eOldHandler
, di tipoIElementHandler
. Quando laNewHandler
proprietà nonnull
è , l'evento indica che un nuovo gestore sta per essere creato per un controllo multipiattaforma. Quando laOldHandler
proprietà nonnull
è , l'evento indica che il controllo nativo esistente sta per essere rimosso dal controllo multipiattaforma e pertanto eventuali eventi nativi devono essere scollegati e altre operazioni di pulizia eseguite.HandlerChanged
viene generato dopo la creazione del gestore per un controllo multipiattaforma. Questo evento indica che il controllo nativo che implementa il controllo multipiattaforma è disponibile e che tutti i valori delle proprietà impostati nel controllo multipiattaforma sono stati applicati al controllo nativo.
Nota
L'evento HandlerChanging
viene generato su un controllo multipiattaforma prima dell'evento HandlerChanged
.
Oltre a questi eventi, ogni controllo multipiattaforma ha anche un metodo sottoponibile a override OnHandlerChanging
richiamato quando viene generato l'evento HandlerChanging
e un OnHandlerChanged
metodo richiamato quando viene generato l'evento HandlerChanged
.
Visualizzare i gestori
Nella tabella seguente sono elencati i tipi che implementano le viste in .NET MAUI:
Gestori di pagine
La tabella seguente elenca i tipi che implementano le pagine in .NET MAUI:
Pagina | Gestore Android | Gestore catalyst iOS/Mac | Gestore di Windows | Mapper proprietà | Mapper dei comandi |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | Telefono FlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |