Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой серии руководств демонстрируется, как реализовать привязку данных, внедрение зависимостей и модульное тестирование с помощью шаблона проектирования 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
ПримечаниеСтраница
Подсказка
При создании приложений Windows часто ссылаются на справочные документы API и концептуальные документы. В этом руководстве вы увидите ссылки в тексте и в группах, помеченных как "Подробнее в документации:". Эти ссылки являются необязательными; Вам не нужно следовать им, чтобы завершить работу с руководством. Они предоставляются, если вы захотите отметить, где можно найти информацию, которая будет нужна вам, когда вы начнете создавать собственные приложения.
Windows developer