Manipuladores
.NET Multi-platform App UI (.NET MAUI) fornece uma coleção de controles entre plataformas que podem ser usados para exibir dados, iniciar ações, indicar atividades, exibir coleções, selecionar dados e muito mais. Cada controle tem uma representação de interface que abstrai o controle. Os controlos de plataforma cruzada que implementam essas interfaces são conhecidos como vistas virtuais.
manipulares mapeiam estas vistas virtuais para controlos em cada plataforma, que são conhecidas como vistas nativas . Os manipuladores também são responsáveis por instanciar a exibição nativa subjacente e mapear a API de controle entre plataformas para a API de exibição nativa. Por exemplo, no iOS, um manipulador mapeia um .NET MAUI Button para um iOS UIButton
. No Android, o Button é mapeado para um MaterialButton
:
Os manipuladores .NET MAUI são acessados por meio da sua interface específica de controlo, como IButton
para um Button. Isso evita que o controle de plataforma cruzada tenha que fazer referência ao seu manipulador e o manipulador tenha que fazer referência ao controle de plataforma cruzada.
Cada classe de manipulador expõe a visualização nativa para o controlo de plataforma cruzada através da sua propriedade PlatformView
. Essa propriedade pode ser acessada para definir propriedades de exibição nativas, invocar métodos de exibição nativos e assinar eventos de exibição nativa. Além disso, o controle multiplataforma implementado pelo manipulador é exposto por meio de sua propriedade VirtualView
.
Ao criar um controle entre plataformas cuja implementação é fornecida em cada plataforma por exibições nativas, você deve implementar um manipulador que mapeie a API de controle entre plataformas para as APIs de exibição nativas. Para obter mais informações, consulte Criar controles personalizados com manipuladores.
Você também pode personalizar manipuladores para aumentar a aparência e o comportamento de controles existentes entre plataformas além da personalização possível por meio da API do controle. Essa personalização do manipulador modifica as exibições nativas para o controle entre plataformas. Os manipuladores são globais, e personalizar um manipulador para um controle resultará em todos os controles do mesmo tipo sendo personalizados em seu aplicativo. Para obter mais informações, consulte Personalizar controles .NET MAUI com manipuladores.
Mapeadores
Um conceito-chave dos manipuladores .NET MAUI são mapeadores. Cada manipulador normalmente fornece um mapeador de propriedades e, às vezes, um mapeador de comandos , que mapeia a API do controle de plataforma cruzada para a API da exibição nativa.
Um mapeador de propriedades define quais Ações devem ser executadas quando ocorre uma alteração de propriedade no controle entre plataformas. É um Dictionary
que mapeia as propriedades do controle entre plataformas para suas Ações associadas. Cada manipulador de plataforma fornece implementações das Ações, que manipulam a API de exibição nativa. Isto assegura que, quando uma propriedade é definida num controlo multiplataforma, a vista nativa subjacente seja atualizada conforme o necessário.
Um mapeador de comandos define quais Ações devem ser executadas quando o controle de plataforma cruzada envia comandos para exibições nativas. Eles são semelhantes aos mapeadores de propriedades, mas permitem que dados adicionais sejam passados. Um comando neste contexto não significa uma implementação ICommand. Em vez disso, um comando é apenas uma instrução e, opcionalmente, seus dados, que são enviados para uma exibição nativa. O mapeador de comandos é um Dictionary
que mapeia o comando do controle multiplataforma para as suas Ações associadas. Cada manipulador fornece implementações das Ações, que manipulam a API de exibição nativa. Isso garante que, quando um controle entre plataformas envia um comando para sua exibição nativa, a exibição nativa é atualizada conforme necessário. Por exemplo, quando um ScrollView é rolado, o ScrollViewHandler
usa um mapeador de comandos para invocar uma Ação que aceita um argumento de posição de rolagem. Em seguida, a Ação instrui a vista nativa subjacente a deslocar-se até essa posição.
A vantagem de usar mapeadores para atualizar exibições nativas é que as exibições nativas podem ser dissociadas de controles entre plataformas. Isso elimina a necessidade de vistas nativas subscreverem e cancelarem a subscrição de eventos de controlo multiplataforma. Ele também permite uma fácil personalização porque os mapeadores podem ser modificados sem subclassificação.
Ciclo de vida do manipulador
Todos os controles .NET MAUI baseados em manipulador suportam dois eventos de ciclo de vida do manipulador:
-
HandlerChanging
é gerado quando um novo manipulador está prestes a ser criado para um controle entre plataformas e quando um manipulador existente está prestes a ser removido de um controle entre plataformas. O objetoHandlerChangingEventArgs
que acompanha este evento tem propriedadesNewHandler
eOldHandler
, do tipoIElementHandler
. Quando a propriedadeNewHandler
não énull
, o evento indica que um novo manipulador está prestes a ser criado para um controle entre plataformas. Quando a propriedadeOldHandler
não énull
, o evento indica que o controle nativo existente está prestes a ser removido do controle entre plataformas e, portanto, todos os eventos nativos devem ser desconectados e outras limpezas devem ser executadas. -
HandlerChanged
é gerado após a criação do manipulador para um controle entre plataformas. Esse evento indica que o controle nativo que implementa o controle de plataforma cruzada está disponível e todos os valores de propriedade definidos no controle de plataforma cruzada foram aplicados ao controle nativo.
Observação
O evento HandlerChanging
é gerado em um controle multiplataforma antes do evento HandlerChanged
.
Além desses eventos, cada controle de plataforma cruzada também tem um método OnHandlerChanging
substituível que é invocado quando o evento HandlerChanging
é gerado e um método OnHandlerChanged
que é invocado quando o evento HandlerChanged
é gerado.
Ver controladores
A tabela a seguir lista os tipos que implementam modos de exibição no .NET MAUI:
Manipuladores de página
A tabela a seguir lista os tipos que implementam páginas no .NET MAUI:
Página | Android Handler | Manipulador de iOS/Mac Catalyst | Manipulador do Windows | Mapeador de Propriedades | Mapeador de Comandos |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | PhoneFlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | Renderizador de Navegação | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |