2014-09-23 2 views
0

Работая под MVVM шаблонObservableCollection: управление событиями

T класс, от моего EDMX файла (рамочный объект).

O - ObservableCollection<T>.

O заселен всем T из базы данных.

Затем некоторые поля T, отредактированы пользователем из GUI.

Как я могу запустить это событие?

Я не хочу редактировать свой файл edmx, я предпочитаю хранить его так, как будто он был сгенерирован. Итак, это означает, что я не могу использовать что-то вроде this, потому что мне нужно изменить мою модель, реализуя INotifyPropertyChanged.

ответ

1

Я не думаю, что вам следует взаимодействовать с объектами модели из вашего EDMX непосредственно в представлении (GUI). Создайте модель представления, чтобы обернуть класс модели T, используйте свою новую модель модели INotifyPropertyChanged и используйте ее в ObservableCollection. Передайте объект модели при создании своей модели представления. При изменении свойства на вид-модели, обновление модели объекта и выстрелить в PropertyChanged событие (я использую YourEdmxClass вместо T, потому что T часто используется генериков):

public class YourEdmxClassViewModel : ViewModel 
{ 
    private YourEdmxClass model; 

    public YourEdmxClassViewModel(YourEdmxClass model) 
    { 
     this.model = model; 
    } 

    public int SomeProperty 
    { 
     get { return this.model.SomeProperty; } 

     set 
     { 
      this.model.SomeProperty = value; 
      this.RaisePropertyChanged(() => this.SomeProperty); 
     } 
    } 
} 
+0

Круто! Есть ли пример или учебник? Извините, я новичок в этом мире! :) –

+1

У меня нет руки, боюсь. Это следует упомянуть в любом учебнике MVVM, в котором рассматриваются устойчивые объекты модели, но на самом деле - ваш взгляд взаимодействует с моделью представлений, и ваша модель представления взаимодействует с моделью. Ваша модель представления действует посредником - она ​​делает данные из модели доступными для представления для представления и изменения, а также относится к проверке и проверке, среди прочего. –

+0

Я получаю сообщение об ошибке в строке RaiseProperyChanged, я думаю, потому что этот класс не реализует решение righh class ...? –

Смежные вопросы