Поделиться через


Привязка данных, внедрение зависимостей и модульное тестирование в WinUI

В этой серии руководств демонстрируется, как реализовать привязку данных, внедрение зависимостей и модульное тестирование с помощью шаблона проектирования Model-View-ViewModel (MVVM) и MVVM Toolkit в приложении WinUI. Он основан на руководстве по созданию приложения WinUI и показывает, как обновить модели просмотра для использования набора средств MVVM и различия между набором средств MVVM и традиционными подходами MVVM.

Вы можете скачать или просмотреть код для этого руководства из репозитория GitHub.

В этом руководстве вы узнаете, как:

  • Общие сведения о различиях между набором средств MVVM и традиционными подходами MVVM.
  • Создайте отдельный проект библиотеки классов для хранения ViewModels и служб для повышения удобства тестирования.
  • Реализуйте привязку данных в приложении WinUI с помощью набора средств MVVM.
  • Добавьте модели представления AllNotesViewModel и NoteViewModel для использования набора средств MVVM.
  • Интегрируйте внедрение зависимостей для управления службами и ViewModels.
  • Создайте проект модульного теста для тестирования ViewModels и служб.

Предпосылки

Чтобы завершить работу с этим руководством, вам потребуется следующее:

  • Visual Studio 2022 (версия 17.14 или более поздней версии) или Visual Studio 2026 с установленной рабочей нагрузкой разработки приложений WinUI .
  • Начальный проект, созданный, следуя шагам в руководстве по созданию приложения WinUI. Если вы уже знакомы с руководством, вы можете скачать код, чтобы приступить к работе с репозиторием GitHub.

Что такое набор средств MVVM?

Набор средств MVVM — это современная, упрощенная и быстрая библиотека, которая помогает реализовать шаблон проектирования MVVM в приложениях .NET. Она входит в состав набора средств сообщества .NET и предоставляет набор средств и служебных программ для упрощения разработки приложений на основе MVVM. Набор средств MVVM включает такие функции, как:

  • ObservableObject: базовый класс, реализующий INotifyPropertyChanged интерфейс, поэтому можно создавать модели представления, уведомляющие представление изменений свойств.
  • RelayCommand: реализация команды, которая позволяет привязать действия пользовательского интерфейса к методам в модели представления.
  • Messenger: система обмена сообщениями, которая обеспечивает обмен данными между различными частями приложения без жесткой связи.
  • Атрибуты: набор атрибутов, который можно использовать для создания стандартного кода, например уведомлений об изменении свойств и реализаций команд.
  • Генераторы исходного кода: создание кода во время компиляции, которое уменьшает количество шаблонного кода и повышает производительность.
  • Поддержка внедрения зависимостей: встроенная поддержка внедрения зависимостей для управления жизненным циклом моделей и служб представления.

Набор средств MVVM предназначен для простоты использования и интеграции в существующие проекты. Он совместим с различными платформами .NET, включая WinUI, WPF и .NET MAUI. Вы можете просмотреть некоторые примеры приложений в репозитории GitHub или пример приложения в Microsoft Store, чтобы узнать, как набор средств MVVM можно использовать в разных сценариях.

Как набор средств MVVM сравнивается с традиционными подходами MVVM?

Набор средств MVVM уменьшает объем стандартного кода ViewModel и упрощает реализацию шаблона проектирования MVVM по сравнению с традиционными подходами. Ниже приведены некоторые ключевые отличия.

Функция Традиционный подход MVVM Подход к набору средств MVVM
Уведомление об изменении свойств Вручную реализуйте INotifyPropertyChanged в базовом классе и инициируйте события PropertyChanged для каждого свойства. Наследуйте от ObservableObject и используйте метод SetProperty для автоматического вызова событий PropertyChanged.
Реализация команд Реализуйте вручную ICommand для каждой команды. Используйте RelayCommand для упрощения создания команд с минимальными стандартными параметрами.
Messaging Реализуйте пользовательские системы обмена сообщениями или используйте сторонние библиотеки. Используйте встроенный Messenger класс для разделения обмена данными между компонентами.
Стандартный код Напишите повторяющийся код для уведомлений об изменении свойств и реализаций команд. Используйте атрибуты и генераторы источников, чтобы уменьшить стандартный код.
Performance Может быть замедление производительности из-за использования рефлексии и генерации кода во время выполнения. Генераторы источников обеспечивают создание кода во время компиляции, повышая производительность.
Поддержка внедрения зависимостей Требуется ручная настройка и управление жизненными циклами модели представления. Встроенная поддержка внедрения зависимостей для управления жизненными циклами модели представления.
Кривая обучения Может потребоваться более глубокое понимание концепций и шаблонов MVVM. Проще учиться и использовать с акцентом на простоту и производительность.

Дополнительные сведения об архитектурном шаблоне MVVM см. в разделе Привязка данных в Windows и MVVM, Model-View-ViewModel (MVVM) и справочной документации по интерфейсу INotifyPropertyChanged.

Приложение "Заметки WinUI"

Окончательное приложение, которое вы создаете в этом руководстве, — это рефакторинговая версия приложения WinUI Notes из руководства по созданию приложения WinUI . Приложение позволяет пользователям создавать, сохранять и загружать несколько заметок. Пользовательский интерфейс исходного приложения остается неизменным, но обновленная архитектура использует набор средств MVVM для привязки данных и управления моделями представления.

AllNotesPage

Снимок экрана: приложение WinUI Notes с тремя сохраненными заметками в представлении AllNotesPage.

ПримечаниеСтраница

Снимок экрана: приложение WinUI Notes с пустой страницей заметок в представлении NotePage.

Подсказка

При создании приложений Windows часто ссылаются на справочные документы API и концептуальные документы. В этом руководстве вы увидите ссылки в тексте и в группах, помеченных как "Подробнее в документации:". Эти ссылки являются необязательными; Вам не нужно следовать им, чтобы завершить работу с руководством. Они предоставляются, если вы захотите отметить, где можно найти информацию, которая будет нужна вам, когда вы начнете создавать собственные приложения.