Составной WPF: шаблон данных и представление модели - PullRequest
3 голосов
/ 13 июля 2011

Вот простой вопрос: что вы используете, чтобы связать ваши представления с вашими моделями представлений?

В основном есть 2 распространенных способа достижения этого: шаблоны данных и внедрение модели представлений (примеры ниже).

Я хотел бы знать, почему вы предпочитаете метод другим, и в каком случае вы их используете.Точная структура MVVM, которую вы используете.


Путь к шаблону данных или подход "Просмотр модели сначала" (Resources.xaml):

<DataTemplate DataType="{x:Type my:PersonViewModel}">
    <my:PersonView/>
</DataTemplate>

Способ внедрения модели представления или подход «Просмотр первым» (PersonView.xaml.cs):

[Import]
public PersonViewModel ViewModel
{
    set
    {
        this.DataContext = value;
    }
}

Ответы [ 3 ]

11 голосов
/ 13 июля 2011

Я предпочитаю использовать DataTemplates

  • Позволяет мне установить несколько видов для одной и той же модели представления на основе свойства

  • Мои ViewModel - это мое приложение, а View - не более чем симпатичный слой, который делает мой ViewModel удобным для пользователя. Если я использую инъекцию ViewModel, то приложения становятся моим приложением, и команда разработчиков внезапно начинает беспокоиться об аспектах пользовательского интерфейса

  • Моими ViewModels управляют другие ViewModels. Например, одна ViewModel может содержать коллекцию других ViewModel, которые отображаются в TabControl. Добавление или закрытие вкладок выполняется в родительской ViewModel. Подобные вещи нелегко осуществить с помощью View, управляющего состоянием приложения.

  • Я могу инициализировать различные ViewModel, используя параметризованные конструкторы, основываясь на моих потребностях, вместо того, чтобы использовать общие импортные

Это всего лишь несколько причин ... Я уверен, что есть другие, но они не приходят на ум прямо сейчас

0 голосов
/ 13 июля 2011

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

0 голосов
/ 13 июля 2011

Мы используем первый подход модели представления, потому что нам легче управлять, особенно в крупных корпоративных приложениях.Мы используем Caliburn.Micro , чтобы позаботиться о местоположении и привязке вида.

...