W Wzorze MVVM jest dokładnie jeden model ViewModel na widok lub czy jest dokładnie jeden model ViewModel na model?ViewModel na widok lub model?
Odpowiedz
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 ...
Istnieje jeden model na jeden model widoku i jeden model widoku na widok, w drugim kierunku wszystko jest n.
Widok n - 1 ViewModel n - 1 model
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.
- 1. Walidacja: Model lub ViewModel
- 2. MVC4 ViewBag lub ViewModel lub?
- 3. ASP.NET MVC Model/ViewModel Validation
- 4. Jak Model powinien przejść do ViewModel?
- 5. Model "Połącz" i ViewModel z lub bez AutoMappera?
- 6. co jest asynchroniczne w MVVM? Model lub ViewModel. Najlepsza praktyka?
- 7. Otwarty/zamknięty widok z ViewModel
- 8. Prism2/MVVM Zamknij widok z ViewModel
- 9. Model-View-ViewModel wzór naruszający DRY?
- 10. dane umieszczania kiedy mój widok model ma konstruktora nie działa
- 11. Widok WPF Ustawia właściwości ViewModel na wartość null przy zamykaniu
- 12. Extjs4 MVC, jak uzyskać model lub widok z klasy kontrolera?
- 13. Jak zwykle model jest udostępniany między obiektami ViewModel?
- 14. Model-widok kontroler w JavaScript
- 15. Określić, który widok ASP.NET MVC powrócić, gdy nie jest używany powrót Widok (model), ale powrót Widok ("viewName", model)
- 16. Ustawianie datacontekstu UserControl na ViewModel zdefiniowany w nadrzędnej viewmodel
- 17. Pobierz model lub 404 na szynach
- 18. Windows Forms (WinForms) Model widoku ViewModel (MVVM) do DataBind lub nie
- 19. Nawigacja między skrótem klawiszowym Model/Widok/Kontroler?
- 20. Aktualizacja widok Backbone gdy model jest zapisywany
- 21. Używanie DependencyProperty na ViewModel z Entity Framework
- 22. Pokaż widok z non-view/viewmodel w mvvmcross
- 23. MVVMCross Jak ten widok jest połączony z ViewModel?
- 24. Widok zend: bootstrap (widok) lub bootstrap (układ)
- 25. Jak używać DelegateCommand na viewmodel?
- 26. Czy model widoku zawiera logikę?
- 27. Skąd bierze się logika nawigacji, View, ViewModel lub gdziekolwiek indziej?
- 28. .NET MVC 4 Silnie napisany ViewModel zawierający Silnie wpisany model z edytoremDla i EditorTemplate częściowy widok niewiążący
- 29. Jeśli model implementuje INotifyPropertyChanged, jak powinien rejestrować/wyrejestrować ViewModel dla zdarzenia PropertyChanged?
- 30. Jak utworzyć model/widok QTableView z niestandardowymi (nieedytowalnymi) uczestnikami?