2012-02-23 35 views

Odpowiedz

19

Teoretycznie relacje są

Widok n - 1 ViewModel n - 1 model

Wiem, że wiele osób będzie ugryźć i mnie pokonać, ale ... W praktyce ...

Bardzo często w aplikacjach biznesowych istnieje warstwa dostępu do danych (DAL). Bardzo często podmiotami z DAL są Twoje Modele. Czasami powinieneś zawinąć te encje w dodatkowe klasy, aby zapewnić rozszerzoną funkcjonalność lub niektóre dodatkowe właściwości. Być może masz własne modele ...

ViewModels i widoki (w praktyce) zazwyczaj mają związek 1 do 1. Coś w stylu - każdy ekran (lub część ekranu) to w rzeczywistości sparowany widok i ViewModel. Myślę, że zwykle po prostu coś w stylu - View jest warstwą interfejsu użytkownika, a ViewModel ma poziom związany z kodem. Widok to tylko plik XAML - warstwa prezentacji. I (najlepsza praktyka) wszystko inne powinno być w ViewModelu - wszystkie procesy odbierania danych, wszystkie polecenia, wszystkie zmienne pola itp. W ten sposób można zazwyczaj testować ViewModel (z testowaniem jednostkowym). Jeden model ViewModel może mieć kilka widoków (w praktyce) zwykle tylko wtedy, gdy udostępniono modele ViewModels dla, na przykład aplikacji DesktopApplication (WPF), aplikacji sieci Web (Silverlight) i Windows Phone. Coś takiego. Ale zwykle - jeden ViewModel - jeden widok. Jeśli masz kilka widoków dla jednego modelu ViewModel - zazwyczaj będziesz mieć wiele problemów z utrzymaniem ...

4

Istnieje jeden model na jeden model widoku i jeden model widoku na widok, w drugim kierunku wszystko jest n.

4

Możliwe jest użycie więcej niż jednego widoku dla tego samego modelu widoku, a także można użyć do wielu różnych widoków modele dla tego samego widoku.

many-poglądy jednej ViewModel:

Na przykład w układzie master-detail można umieścić swoje oglądać modele do ObservableCollection i przedstawić je w ListBox, w którym stała się ona wiążąca elementy wyświetlane na własność tytułu z ViewModel. ListBox przedstawia jeden widok twoich modeli widoku. Następnie obiekt ListBox.SelectedItem jest powiązany z innym widokiem, który przedstawia szczegóły wybranego modelu.

One-View do wielu-ViewModels:

Począwszy od zestawu widoków modeli, które wszyscy dzielimy nazwy wspólnej własności można przedstawić wszystkie modele widoku w tym samym widoku. Na przykład możesz mieć prosty model widoku składający się z właściwości Title i właściwości ModelValue. We wszystkich modelach widoku właściwość Tytuł będzie ciągiem znaków, ale każdy inny model widoku może mieć inny typ danych dla właściwości ModelValue. StringViewModel miałby łańcuch ModelValue, a DoubleViewModel miałby podwójną wartość ModelValue. Prezentacja różnych modeli widoku może dzielić ten sam widok składający się z TextBlock, aby przedstawić Tytuł i TextBox do edycji ModelValue. To działałoby dla każdego rodzaju edytowalnego w TextBox.

Łącząc i dopasowując widoki i modele ViewModels, można uzyskać ogromną przewagę dzięki czystemu rozdzieleniu widoków i modeli ViewModels.

Powiązane problemy