Каковы плюсы и минусы различных методов создания представлений в WPF? - PullRequest
12 голосов
/ 26 января 2010

Я использую MVVM в течение последних двух лет, и с тех пор он, безусловно, развивался в лучшую сторону. Когда я прочитал сотни статей о MVVM и вопросы stackoverflow, я заметил, что появляется все больше и больше статей, которые описывают отношения view / viewmodel и создание как ViewModel сначала или View сначала. Эти статьи обычно используют IoC или DI.

Моим любимым приемом было использование таблиц данных для создания представлений и структурирование приложения по моделям представления, а не по представлениям. Я редко вижу статьи, в которых используется этот шаблон.

<DataTemplate DataType="{x:Type ViewModels:DummyViewModel}">
  <Views:DummyUserControl DataContext="{Binding}"/>
</DataTemplate>

Тестируемость и развязка, по-видимому, являются основным фокусом этих «не связанных с данными» проектов и статей создания / отношений V-VM, и часто они имеют отношение к MEF или PRISM. В конечном итоге я хотел бы знать следующее:

  1. Метод создания представления DataTemplate все еще используется или рекомендуется?
  2. Каковы плюсы / минусы первого вида дизайна?
  3. Каковы плюсы / минусы первого дизайна модели представления (с введенным видом)

Приветствуются любые хорошие ссылки на статьи, посвященные этим темам, при условии, что они не связаны с MEF / PRISM.

Ответы [ 2 ]

2 голосов
/ 26 января 2010

1. Является ли метод создания представления DataTemplate все еще используемым или рекомендуемым?

Это мой предпочтительный метод работы в MVVM.Мне очень нравится этот подход, по причинам, которые я укажу ниже.Я использую это во всех своих разработках.

2.Какие плюсы / минусы дизайна первого вида?

Основным преимуществом, который я здесь обнаружил, является то, что в нем немного прощевремя проектирования.Дизайнер заранее «знает» контекст данных и, как правило, может упростить работу.

Основным здесь, с моей точки зрения, является то, что вы добавляете более тесную связь междуПосмотреть и ViewModel.Также сложнее выбрать конкретную модель для обхода.

3. Каковы плюсы / минусы первого дизайна модели представления (с введенным видом)

Лично мне нравится этот подход.Таким образом, «логическая» сторона вашего приложения полностью содержится в вашем слое ViewModel.Используя ContentPresenters, вы можете сделать так, чтобы ViewModel легко генерировал другие ViewModel, определяя «поток» вашего приложения.Представления могут быть легко изменены разработчиком.

Хотя здесь и есть небольшое снижение удобства использования во время разработки, поскольку представления на самом деле ничего не знают о виртуальной машине во время разработки,Вы теряете немного конструктивности.

0 голосов
/ 29 января 2010

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

Подход, который мы используем, описан на странице проекта WPF Application Framework (WAF) :

http://waf.codeplex.com/wikipage?title=Model-View-ViewModel%20Pattern&ProjectName=waf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...