Я новичок в WPF и MVVM, и много борюсь с тем, как проектировать мое приложение (отсюда много вопросов здесь), и я собираюсь сделать рефактор. У меня есть SQL-сервер и я использую LINQtoSQL, поэтому классы, которые генерирует LINQTOSQL, будут моей моделью. Мне еще предстоит увидеть хороший исчерпывающий пример того, как убрать классы модели от представления - в примере, который я сейчас рассматриваю, представление является привязкой к ModelClass.Something вместо свойства ViewModel, которое ссылается на ModelClass.Something. Правильно ли я полагаю, что это плохо (если это поле изменилось в db, просмотр перерывов)?Проблемы с шаблоном проектирования MVVM
То, с чем я сейчас борюсь, - это выпадающие списки. Пример. У меня есть таблица поиска с именем MessageType с идентификатором и текстовым полем и метод репозитория для их извлечения. Поэтому, на мой взгляд, я хочу избежать привязки пути DisplayMemberPath и SelectedValue к полям класса MessageType моего Model, поэтому мне нужно создать новый класс и показать свойства этого класса в моей модели ViewModel? Как это:
public class MessageTypeViewModel : ViewModelBase
{
public MessageTypeViewModel(MessageType t)
{
MessageTypeText = t.messageTypeText;
MessageTypeId = t.messageTypeId;
}
public string MessageTypeText { get; private set; }//bind DisplayMember and SelectedValue to these properties
public int MessageTypeId { get; private set; }
}
заселение так:
get
{
if (textMessageSelectionOptions == null)
{
var list = repository.GetMessageTypes().Select(x=>new MessageTypeViewModel(x)).ToList();
textMessageSelectionOptions =new ReadOnlyCollection<MessageTypeViewModel>(list);
}
return textMessageSelectionOptions;
}
Также я объект Mission, которая имеет внешний ключ MessageType так как я связать SelectedItem поле со списком, чтобы mission.MessageType, учитывая, что I теперь этот новый класс? Я действительно пытаюсь получить шаблон с объектом миссии, его детьми и его родителями, и я не могу найти исчерпывающих примеров, когда люди делают операции CRUD с MVVM. Я иду сверху или что-то не хватает?
Если ваша модель взгляда не добавляет поведения к классу (например, реализация 'INotifyPropertyChanged' или команда/свойство для представления), то я бы не обернул ее в модель представления - это просто приводит к ненужному обслуживанию. –