Compartilhar via


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

Esta série de tutoriais demonstra como implementar a associação de dados, a injeção de dependência e o teste de unidade com o padrão de design MVVM (Model-View-ViewModel) e o Kit de Ferramentas MVVM 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 Kit de Ferramentas MVVM e as diferenças entre o Kit de Ferramentas MVVM e as abordagens MVVM tradicionais.

Você pode baixar ou exibir o código deste tutorial no repositório do GitHub.

Neste tutorial, você aprenderá como:

  • Entenda as diferenças entre o Kit de Ferramentas MVVM e as abordagens MVVM tradicionais.
  • Crie um projeto separado de biblioteca de classes para armazenar os ViewModels e serviços, melhorando assim a capacidade de teste.
  • Implemente a associação de dados em seu aplicativo WinUI usando o Kit de Ferramentas do MVVM.
  • Adicione AllNotesViewModel e NoteViewModel modelos de visualização para aproveitar o Kit de Ferramentas MVVM.
  • Integre a injeção de dependência para gerenciar ViewModels e serviços.
  • Crie um projeto de teste de unidade para testar seus serviços e ViewModels.

Pré-requisitos

Para concluir este tutorial, você precisará 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á estiver familiarizado com o tutorial, poderá baixar o código para começar aqui no repositório do GitHub.

O que é o Kit de Ferramentas MVVM?

O Kit de Ferramentas MVVM é 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 Kit de Ferramentas MVVM inclui recursos como:

  • ObservableObject: uma classe base que implementa a INotifyPropertyChanged interface, para que você possa criar modelos de exibição que notifiquem a exibição de alterações de propriedade.
  • RelayCommand: uma implementação de comando que permite associar ações de 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 apertado.
  • 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 código repetitivo 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 Kit de Ferramentas MVVM foi projetado para ser fácil de usar e integrar em seus projetos existentes. Ele é 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 Kit de Ferramentas MVVM pode ser usado em diferentes cenários.

Como o Kit de Ferramentas MVVM se compara às abordagens MVVM tradicionais?

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

Característica Abordagem MVVM tradicional Abordagem do Kit de Ferramentas do MVVM
Notificação de alteração de propriedade Implemente INotifyPropertyChanged manualmente em uma classe base e gere PropertyChanged eventos para cada propriedade. Herda de ObservableObject e use o método SetProperty para gerar eventos PropertyChanged automaticamente.
Implementação de comando Implemente ICommand manualmente para cada comando. Use RelayCommand para criar comandos facilmente com o mínimo de clichês.
Messaging Implemente sistemas de mensagens personalizados ou use bibliotecas de terceiros. Use a classe interna Messenger para comunicação desacoplada entre componentes.
Código clichê Escreva código repetitivo para notificações de alteração de propriedade e implementações de comando. Use atributos e geradores de origem para reduzir o código clichê.
Performance Pode ter sobrecarga de desempenho devido à reflexão e geração de código em tempo de execução. Os geradores de origem fornecem geração de código em tempo de compilação, melhorando o desempenho.
Suporte à injeção de dependência Requer a instalação manual e o gerenciamento de ciclos de vida do modelo de exibição. Suporte interno 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 do 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 associação de dados do Windows e MVVM, MVVM (Model-View-ViewModel) e a documentação de referência para a interface INotifyPropertyChanged.

O aplicativo Notas do WinUI

O aplicativo final criado neste tutorial é uma versão refatorada do aplicativo WinUI Notes no tutorial Criar um aplicativo WinUI . O aplicativo permite que os usuários criem, salvem e carreguem várias anotações. A interface do usuário do aplicativo original permanece a mesma, mas a arquitetura atualizada usa o Kit de Ferramentas MVVM para associação de dados e gerenciamento de modelo de exibição.

AllNotesPage

Captura de tela do aplicativo WinUI Notes exibindo três anotações salvas no modo de exibição AllNotesPage.

NotePage

Captura de tela do aplicativo Notas do WinUI mostrando uma página de anotação em branco no modo de exibição NotePage.

Dica

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:". Esses 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.