Итоги и проверка знаний

Завершено

В этом модуле показано, как универсальная платформа Windows (UWP) и Windows Presentation Foundation (WPF) поддерживают привязку данных. Теперь вы знаете больше об автоматическом надежном и высокопроизводительном процессе подключения пользовательского интерфейса и бизнес-логики приложения.

Вы узнали, как обновлять пользовательский интерфейс при изменении свойства объекта в коде и как обновлять свойство при изменении пользовательского интерфейса. Вы отобразили список элементов (цветов) в ListBox или ComboBox: только двух из многих элементов управления, которые можно использовать для отображения коллекции элементов на экране. Если вы выполнили все описанные в учебниках действия, теперь у вас также есть практический опыт управления отображением отдельных элементов в этих элементах управления. У вас также есть опыт уведомления бизнес-логики о том, что пользователь выбрал элемент. Наконец, вы теперь знаете, как автоматически отражать изменения в своей коллекции (например, добавление или удаление элементов) в пользовательском интерфейсе.

Такое разделение пользовательского интерфейса и логики имеет решающее значение при разработке даже умеренно сложных приложений. Это позволяет вашей бизнес-логике (коду) думать в терминах бизнес-объектов. Например, нам не нужно было учитывать элемент управления TextBox в нашей логике, когда мы запрашивали имя пользователя. Нам нужно было только обрабатывать объект String введенного текста. В нашем списке избранных цветов хранились фактические объекты ColorDescriptor вместо объектов, связанных с пользовательским интерфейсом, таких как ListItem. Но благодаря привязке данных пользовательский интерфейс может по-прежнему отображать эти элементы любым выбранным способом: в элементах ListBox, ComboBox, в макете в виде сетки с карточками или даже в виде карусели. Вашу бизнес-логику не нужно изменять ни для одного из этих вариантов.

Правильное разделение логики и пользовательского интерфейса также позволяет писать для бизнес-логики отдельные автоматические модульные тесты. Эти тесты могут выполняться без запуска приложения (например, с помощью Модульного тестирования Visual Studio). Эти тесты предполагают наличие проверенного механизма привязки данных для их передачи между пользовательским интерфейсом и кодом бизнес-логики.

Упрощение кодировки класса

Наконец, в этом модуле вы увидели, как можно использовать преимущества базового класса для упрощения кодирования классов, поддерживающих привязку данных. Это был первый шаг в применении отраслевого стандарта — архитектуры Модель — представление — модель представления (MVVM).

Модель, в нашем маленьком примере, хорошо представлена классом ColorDescriptor . Хранятся данные о реальном объекте или понятии, в данном случае о цвете.

Представление — это код XAML, MainPage.xaml (UWP) / MainWindow.xaml (WPF) и ColorList.xaml, а также файлы с кодом программной части, MainPage.xaml.cs (UWP) / MainWindow.xaml.cs (WPF) и ColorList.xaml.cs.

Модель представления — это фактическая бизнес-логика, управляя пользовательским интерфейсом, принимая решения (например, следует ли включить кнопку). В нашем примере MainPageLogic UWP классы и ColorListLogic классы по сути являются классами viewmodel. В примере MainWindowDataContextClockWPF классы и ColorListDataContext классы — это модели представлений.

MVVM является наиболее широко используемым шаблоном архитектуры для платформ пользовательского интерфейса с поддержкой привязки данных. Существует множество наборов средств и платформ MVVM, которые могут переходить к разработке в UWP и WPF или даже пакете SDK для приложений Windows и .NET MAUI. Ниже приведены некоторые наиболее популярные из них:

И напоследок

Теперь, когда вы подготовились к разработке приложений для Windows, продолжайте обучение. Ознакомьтесь со следующим модулем, чтобы узнать больше о подключении приложения к облаку. Но сначала пройдите этот тест, чтобы проверить знания.

Проверка знаний

1.

Что такое привязка данных?

2.

Какой интерфейс необходимо реализовать, чтобы отразить изменение свойства C# в пользовательском интерфейсе?

3.

Что нужно сделать, чтобы перенести текст, введенный в текстовое поле, в свойство строки C# с помощью привязки данных?

4.

Что необходимо сделать, чтобы отобразить объекты, хранящиеся в коллекции IEnumerable элемента ListBox?

5.

Элементы добавляются в коллекцию во время работы приложения. Как сделать так, чтобы пользовательский интерфейс отражал эти изменения?