Шаблоны проектирования, используемые в WPF - PullRequest
9 голосов
/ 22 июня 2011

Ниже приводится выдержка из этой статьи на MVVM.Может кто-нибудь привести пример того, как эти другие шаблоны (команда, DI) используются в WPF?Существуют ли какие-либо другие шаблоны проектирования, используемые в WPF, которые вы здесь не видите?

Существуют и другие шаблоны, о которых вам следует знать, чтобы помочь вам в MVVM.Шаблоны, такие как командование (запеченные в WPF, решения для SL), медиатор и gasp внедрение зависимостей.,

Ответы [ 3 ]

25 голосов
/ 03 декабря 2011

Я написал статью о некоторых из них: Шаблоны проектирования WPF и Silverlight

Вот краткое описание моделей:

1) MVVM - используется в качестве преобразователя модели и в качестве замены кода кода. Улучшает тестируемость, гораздо проще писать модульные тесты для ViewModel.

2) Внедрение зависимостей - используется для улучшения тестируемости класса (вы можете написать модульные тесты для определенного класса отдельно от других) и для возможности более простого изменения реализации (сменить регистратор, поставщик кеша, веб-сервис и т. д.)

3) Команда - по умолчанию может применяться к элементам управления Button и MenuItem, отключает элементы управления, если действие не может быть выполнено. Также используется в шаблоне MVVM для замены событий с выделенным кодом.

Другие шаблоны из классической книги, которые уже используются в WPF:

  • Singleton. Класс Application в WPF и класс HttpContext в веб-формах.
  • адаптер. Механизм привязки данных, который использует IValueConverter интерфейс для преобразования значений привязки для пользовательского интерфейса.
  • декоратор. Класс Border, который украшает любой класс UIElement с рамкой переменной толщины и цвета.
  • Фасадная. Класс PrintDialog, который предоставляет простой интерфейс что позволяет использовать всю подсистему печати и документов что обеспечивает WPF.
  • Command. Интерфейс ICommand, который реализуется Классы RoutedCommand и RoutedUICommand.
  • итератор. Интерфейс IEnumerator, который много коллекций и списков в реализации .NET Framework.
  • Наблюдатель. Интерфейс и события INotifyPropertyChanged.
1 голос
/ 15 июля 2011

Привязка данных (между View и ViewModel) использует шаблон Observer.Также: шаблон Factory можно использовать для создания экземпляра ViewModel, но это необязательно.

1 голос
/ 15 июля 2011

Внедрение зависимости сеттера:

При использовании MVVM необходимо внедрить экземпляр ViewModel в View, задав для него свойство view.DataContext:

var viewModel = new CustomViewModel();
var view = new CustomView();
view.DataContext = viewModel;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...