2013-05-15 11 views

Odpowiedz

10

Podczas korzystania z MVVM powinieneś udać się z ObservableCollection<ViewModel>.

Model należy oddzielić od widoku za pomocą ViewModel.

+3

na pewno, ale "ObservableCollection <>" jest już w "ViewModel", więc jest już oddzielony od 'Widok' lub czy coś mi brakuje? – WiiMaxx

+1

@WiiMaxx To naprawdę nie jest oddzielone, ponieważ wciąż używasz klasy w widoku. – mattytommo

+0

O, dobry sprzeciw. Więc nie ma sensu tworzyć 2 obiektów Model-> ViewModel dla obiektu, który być może nigdy nie był użyty przez użytkownika – WiiMaxx

-1

Powiedziałbym, idź z ObservableCollection<Model>, ponieważ jest to coś, co można powiązać bezpośrednio z List lub datagrid.

Dla przykładowej sytuacji 1: Wybierz model, a następnie ustaw kontekst danych nowego okna dla tego modelu.

Dla próbki sytuacji 2: W miejscu edycji datagrid z 2 sposób wiązania.

ObservableCollection może znajdować się wewnątrz obiektu ViewModel. Coś jak ten pokazany poniżej.

public class MyViewModel 
{ 
    public ObservableCollection<Model> ListOfItems { get; set;} 
} 
+0

podobnie jak mattytommo już mówi, że 'Widok' musi być oddzielony od Modelu, więc byłoby bardziej jak wybrać' Model' stworzyć 'ViewModel', dać mu Model i ustawić ten' ViewModel' jako 'DataContext' – WiiMaxx

+0

Chciałbym nadal kontynuuj powyższą implementację, ponieważ oznaczałoby to konieczność implementacji INotifyPropertyChanged w klasie Model. Ułatwiłoby to powiązanie z widokiem. Spójrz na ten wątek: http://stackoverflow.com/questions/6922130/in-mvvm-model-mould-the-model-implement-inotifypropertychanged-interface – cvraman

Powiązane problemy