Шаблоны проектирования, используемые в WPF
ниже excrept от в этой статье на MVVM. Может ли кто-нибудь привести пример того, как эти другие шаблоны (command, DI) используются в WPF? Есть ли другие шаблоны desgin, которые используются в WPF, которые вы не видите здесь ?
есть другие шаблоны, которые вы должны знать, чтобы помочь вам в MVVM. Такие шаблоны, как командование (запеченные в WPF, решения для SL), посредник и вздох инъекции зависимостей. .
3 ответов
привязка данных (между View и ViewModel) использует шаблон Observer. Кроме того: шаблон фабрики можно использовать для создания экземпляра ViewModel, но это необязательно.
Я написал статью о некоторых из них: шаблоны дизайна WPF и Silverlight
вот краткое описание модели:
1) MVVM - используется в качестве преобразователя модели и в качестве замены кода. Улучшает тестируемость, гораздо проще писать модульные тесты для ViewModel.
2) Инъекции Зависимостей - используется для улучшения тестируемости класса (можно написать модульные тесты для конкретного класс отдельно от других) и для возможности изменить реализацию более простым способом (изменить регистратор, поставщик Кэша, веб-сервис и т. д.)
3) команда - может применяться к элементам управления Button и MenuItem по умолчанию, отключает элементы управления, если действие не может быть выполнено. Также используется в шаблоне MVVM в качестве замены кода события.
другие шаблоны из классической книги, которые уже используются в WPF:
- Синглтон. Этот Класс приложения в WPF и класс HttpContext в веб-формах.
- адаптер. Механизм привязки данных, использующий IValueConverter интерфейс для преобразования значений привязки для пользовательского интерфейса.
- оформителя. Класс Border, который украшает любой класс UIElement с границей переменной толщины и цвета.
- фасад. Класс PrintDialog, который предоставляет простой интерфейс это позволяет использовать всю подсистему печати и документов что в WPF обеспечивает. . Интерфейс ICommand, который реализуется Классы RoutedCommand и RoutedUICommand.
- итератор. Интерфейс IEnumerator, который содержит множество коллекций и списков в реализации .NET Framework.
- наблюдателя. Интерфейс и события INotifyPropertyChanged.
инъекция зависимостей сеттера:
при использовании MVVM вы должны ввести экземпляр ViewModel в представление, установив его в представление.Свойство DataContext:
var viewModel = new CustomViewModel();
var view = new CustomView();
view.DataContext = viewModel;