Создание модельной части MVVM - PullRequest
3 голосов
/ 03 июля 2011

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

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

Вот пример моей текущей настройки.Я прочитал некоторые данные о сотрудниках, которые возвращают группы сотрудников («менеджеры», «вице-президент» и т. Д.).Каждая группа содержит список людей.Я создал интерфейс для представления групп:

public interface IEmployeeGroup : INotifyPropertyChanged
{
    bool IsDirty { get; set; }
    string GroupName { get; set; }
    ObservableCollection<IPerson> People { get; set; }
}



public interface IPerson : INotifyPropertyChanged
{
    bool IsDirty { get; set; }
    string PersonName { get; set; }
    int Id { get; set; }
}

Затем я создаю конкретные классы EmployeeGroup и Person, реализующие эти интерфейсы.И это все, что они делают, выставляют указанные свойства.

Это все, что у меня есть для моей модели.

Моя модель представления реализует следующий интерфейс:

public interface IEmployeeGroupsViewModel
{
    ICommand AddEntryCommand { get; }
    ICommand SaveCommand { get; }

    ObservableCollection<IEmployeeGroup> EmployeeGroups { get; set; }
    ObservableCollection<IPerson> People { get; set; }
}

модель представления выполняет вызов для получения фактических данных, создает объекты EmployeeGroup и Person, а затем возвращает их в свойствах для привязки к представлению.Когда пользователь хочет сохранить свои изменения, модель представления выполняет вызов, чтобы сохранить изменения.

Я слишком много вкладываю в модель представления, которая вместо этого должна быть в модели?Прямо сейчас моя модель ничего не делает, это просто классы, которые представляют объекты.

Если я не в курсе, может кто-нибудь дать мне какой-нибудь совет?Как бы я изменил свой сценарий, например, выше?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 03 июля 2011

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

MVVM - это тестируемость, а не чистота шаблона. Пока то, что вы делаете, работает, вы всегда можете выполнить рефакторинг позже.

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

Это выглядит правильно для меня.

Я могу ошибаться, но на самом деле я не вижу выгоды от создания интерфейсов модели представления из INotifyPropertyChanged.Это кажется ненужным соединением двух вещей, которые на самом деле не имеют каких-либо внутренних отношений друг с другом.Я бы просто объявил класс PersonViewModel (например) как:

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