MVVM - obowiązki
Wzorzec MVVM składa się z trzech części - modelu, widoku i modelu widoku. Większość programistów na początku jest trochę zdezorientowanych co do tego, co Model, Widok i ViewModel powinny lub nie powinny zawierać i jakie są obowiązki każdej części.
W tym rozdziale poznamy obowiązki każdej części wzorca MVVM, abyś mógł jasno zrozumieć, jaki rodzaj kodu trafia do miejsca. MVVM jest w rzeczywistości warstwową architekturą po stronie klienta, jak pokazano na poniższym rysunku.
Warstwa prezentacji składa się z widoków.
Warstwa logiczna to modele widoków.
Warstwa prezentacji to połączenie obiektów modelu.
Usługi klienckie, które je generują i utrwalają, kierowały dostęp w aplikacji dwuwarstwowej lub za pośrednictwem wywołań usług w aplikacji, a następnie do niej.
Usługi klienta nie są oficjalnie częścią wzorca MVVM, ale często są używane z MVVM w celu uzyskania dalszych separacji i uniknięcia powielania kodu.
Obowiązki modelu
Ogólnie rzecz biorąc, model jest najłatwiejszy do zrozumienia. Jest to model danych po stronie klienta, który obsługuje widoki w aplikacji.
Składa się z obiektów z właściwościami i niektórymi zmiennymi zawierającymi dane w pamięci.
Niektóre z tych właściwości mogą odnosić się do innych obiektów modelu i tworzyć wykres obiektów, który jako całość jest obiektami modelu.
Obiekty modelu powinny zgłaszać powiadomienia o zmianie właściwości, które w WPF oznaczają powiązanie danych.
Ostatnim obowiązkiem jest walidacja, która jest opcjonalna, ale można osadzić informacje walidacyjne na obiektach modelu przy użyciu funkcji walidacji powiązań danych WPF za pośrednictwem interfejsów, takich jak INotifyDataErrorInfo / IDataErrorInfo
Wyświetl obowiązki
Głównym celem i obowiązkami widoków jest zdefiniowanie struktury tego, co użytkownik widzi na ekranie. Struktura może zawierać części statyczne i dynamiczne.
Części statyczne to hierarchia XAML, która definiuje kontrolki i układ kontrolek, z których składa się widok.
Część dynamiczna przypomina animacje lub zmiany stanu, które są definiowane jako część Widoku.
Głównym celem MVVM jest to, że w widoku nie powinno być żadnego kodu.
Niemożliwe jest, aby w polu widzenia nie było żadnego kodu. W związku z tym potrzebujesz przynajmniej konstruktora i wywołania do zainicjowania komponentu.
Pomysł polega na tym, że kod logiki obsługi zdarzeń, akcji i manipulacji danymi nie powinien znajdować się w kodzie w widoku.
Istnieją również inne rodzaje kodu, które muszą znajdować się w kodzie za każdym kodem, który jest wymagany, aby mieć odwołanie do elementu interfejsu użytkownika, który jest nieodłącznie wyświetlany.
Obowiązki ViewModel
ViewModel jest głównym punktem aplikacji MVVM. Podstawowym obowiązkiem ViewModel jest dostarczanie danych do widoku, aby widok mógł umieścić te dane na ekranie.
Pozwala również użytkownikowi na interakcję z danymi i zmianę danych.
Innym kluczowym obowiązkiem ViewModel jest hermetyzacja logiki interakcji dla widoku, ale nie oznacza to, że cała logika aplikacji powinna przejść do ViewModel.
Powinien być w stanie obsłużyć odpowiednią sekwencję wywołań, aby wykonać właściwą rzecz w zależności od użytkownika lub jakichkolwiek zmian w widoku.
ViewModel powinien również zarządzać dowolną logiką nawigacji, na przykład decydowaniem, kiedy nadszedł czas, aby przejść do innego widoku.