Partilhar via


Vinculação de dados, injeção de dependência e teste de unidade no WinUI

Esta série de tutoriais demonstra como implementar vinculação de dados, injeção de dependência e teste de unidade com o padrão de design Model-View-ViewModel (MVVM) e o MVVM Toolkit em um aplicativo WinUI 3. Ele se baseia no tutorial Criar um aplicativo WinUI e mostra como atualizar seus modelos de exibição para aproveitar o MVVM Toolkit e as diferenças entre o MVVM Toolkit e as abordagens MVVM tradicionais.

Você pode baixar ou visualizar o código para este tutorial no repositório GitHub.

Neste tutorial, aprenderás como:

  • Entenda as diferenças entre o MVVM Toolkit e as abordagens MVVM tradicionais.
  • Crie um projeto de biblioteca de classes separado para manter ViewModels e serviços para melhorar a testabilidade.
  • Implemente a vinculação de dados em seu aplicativo WinUI usando o MVVM Toolkit.
  • Adicione AllNotesViewModel e NoteViewModel modelos de visualização para utilizar o MVVM Toolkit.
  • Integre a injeção de dependências para gerir os ViewModels e serviços.
  • Crie um projeto de teste de unidade para testar seus ViewModels e serviços.

Pré-requisitos

Para concluir este tutorial, precisa dos seguintes pré-requisitos:

  • Visual Studio 2022 (versão 17.14 ou posterior) ou Visual Studio 2026 com a carga de trabalho de desenvolvimento de aplicativos WinUI instalada.
  • Um projeto inicial criado seguindo as etapas no tutorial Criar um aplicativo WinUI . Se você já está familiarizado com o tutorial, você pode baixar o código para começar aqui a partir do repositório GitHub.

O que é o MVVM Toolkit?

O MVVM Toolkit é uma biblioteca moderna, leve e rápida que ajuda você a implementar o padrão de design MVVM em seus aplicativos .NET. Ele faz parte do .NET Community Toolkit e fornece um conjunto de ferramentas e utilitários para simplificar o desenvolvimento de aplicativos baseados em MVVM. O MVVM Toolkit inclui recursos como:

  • ObservableObject: uma classe base que implementa a INotifyPropertyChanged interface, para que você possa criar modelos de exibição que notificam a exibição de alterações de propriedade.
  • RelayCommand: uma implementação de comando que permite vincular ações da interface do usuário a métodos em seu modelo de exibição.
  • Messenger: um sistema de mensagens que permite a comunicação entre diferentes partes do seu aplicativo sem acoplamento rígido.
  • Atributos: um conjunto de atributos que você pode usar para gerar código clichê, como notificações de alteração de propriedade e implementações de comando.
  • Geradores de código-fonte: geração de código em tempo de compilação que reduz o clichê e melhora o desempenho.
  • Suporte à injeção de dependência: Suporte interno para injeção de dependência para gerenciar o ciclo de vida de modelos e serviços de exibição.

O MVVM Toolkit foi projetado para ser fácil de usar e integrar em seus projetos existentes. É compatível com várias plataformas .NET, incluindo WinUI, WPF e .NET MAUI. Você pode conferir alguns aplicativos de exemplo no repositório GitHub ou no aplicativo de exemplo na Microsoft Store para ver como o MVVM Toolkit pode ser usado em diferentes cenários.

Como o MVVM Toolkit se compara às abordagens MVVM tradicionais?

O MVVM Toolkit reduz a quantidade de código ViewModel clichê e simplifica muitos aspetos da implementação do padrão de design MVVM em comparação com as abordagens tradicionais. Aqui estão algumas diferenças importantes:

Característica Abordagem MVVM tradicional Abordagem do MVVM Toolkit
Notificação de alteração de propriedade Implemente INotifyPropertyChanged manualmente em uma classe base e gere PropertyChanged eventos para cada propriedade. Herdar de ObservableObject e usar o método SetProperty para gerar eventos PropertyChanged automaticamente.
Implementação do Comando Implemente ICommand manualmente para cada comando. Use RelayCommand para criar facilmente comandos com o mínimo de clichê.
Messaging Implemente sistemas de mensagens personalizados ou use bibliotecas de terceiros. Use a classe interna Messenger para comunicação dissociada entre componentes.
Código Boilerplate (código padrão) Escreva código repetitivo para notificações de alteração de propriedade e implementações de comando. Use atributos e geradores de código-fonte para reduzir o código clichê.
Performance Pode ter impacto no desempenho devido à reflexão e à geração de código em tempo de execução. Os geradores de código-fonte fornecem geração de código em tempo de compilação, melhorando o desempenho.
Suporte de injeção de dependência Requer configuração manual e gerenciamento dos ciclos de vida do modelo de exibição. Suporte integrado para injeção de dependência para gerenciar ciclos de vida do modelo de exibição.
Curva de aprendizagem Pode exigir uma compreensão mais profunda dos conceitos e padrões MVVM. Mais fácil de aprender e usar com foco na simplicidade e produtividade.

Para obter mais informações sobre o padrão de design MVVM, consulte Vinculação de dados do Windows e MVVM, Model-View-ViewModel (MVVM) e a documentação de referência para a Interface INotifyPropertyChanged.

O aplicativo WinUI Notes

O aplicativo final que você cria neste tutorial é uma versão refatorada do aplicativo WinUI Notes do tutorial Criar um aplicativo WinUI . O aplicativo permite que os usuários criem, salvem e carreguem várias notas. A interface do usuário do aplicativo original permanece a mesma, mas a arquitetura atualizada usa o MVVM Toolkit para vinculação de dados e gerenciamento de modelo de exibição.

AllNotesPage

Captura de ecrã da aplicação WinUI Notes a apresentar três notas guardadas na vista AllNotesPage.

Página de Observação

Captura de ecrã da aplicação WinUI Notes a mostrar uma página de notas em branco na vista NotePage.

Sugestão

Ao criar aplicativos do Windows, você geralmente se refere a documentos de referência de API e documentos conceituais. Neste tutorial, você verá links embutidos no texto e em grupos rotulados como "Saiba mais nos documentos:". Estes links são opcionais; Você não precisa segui-los para concluir o tutorial. Eles são fornecidos caso você queira anotar onde encontrar as informações necessárias quando começar a criar seus próprios aplicativos.