Шаблоны проектирования, используемые в 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;