MVVM - jak to jest z tym modelem?

0

Witam!

Proszę Was o pomoc z wzorcem MVVM. Otóż jak wiadomo, istnieją w nim trzy warstwy: View, ViewModel i Model. W przypadku WPF'a View to plik XAML + kilka linijek z Code-Behind (Init i dopasowanie DataContext). W ViewModel'u trzymamy wartości pól z okna, komendy - całość jest dziedziczona po INotifyPropertyChanged. Każda warstwa ma swojego locatora, przez którego można uzyskać dostęp do innych obiektów z tejże warstwy. A Model...

No właśnie, i tutaj mam problem. Model ma za zadanie ładować/trzymać dane i na nich operować - słowem, cała logika aplikacji. Jednak jak on ma się do pozostałych dwóch warstw? Czy w każdym ViewModel należy tworzyć obiekty modelu, czy są to klasy-singletony? Bo VM w reakcji na np. kliknięcie buttona musi wywołać jakoś te dane z modelu i w następstwie zaktualizować widok.

Mam mały mętlik w głowie z tym związany - każdy artykuł implementuje to inaczej, a MVVM to ciężki wzorzec :/
Proszę o jakieś jasne wytłumaczenie jak powinno to wyglądać.

Pozdrawiam!

0

View - Widok -> Sama implementacja kontrolek czy to w xamlu czy w behind code oraz dodane binding czyli łaczenia z view modelem i dobry (według mnie) nawykiem jest tworzenie jednego view który ma jeden viewmodel. Tutaj zawiera się cała idea w jaki sposób informacje są prezentowane.
ViewModel - Widok Modelu ( jakkolwiek to tłumaczyć ) -> warstwa pośrednicząca pomiędzy widokiem a modelem. Warstwa ta zawiera całą implementację tego w jaki sposób obsługiwać dane pobierane z widoku i zapisywać je w modelu czy na odwrót.
Model -> warstwa zawierająca logike biznesową poprzez logike rozumiem tutaj informacje które są przechowywane w jakiś porządku jednym słowem tutaj siedzi baza danych i jakies inne cuda typu dto.

0

Ok, zanim będę dalej Was mordował pytaniami, spróbuję przetrawić zarówno Twój opis jak i ten podany z linku :) Mam nadzieję że rozwieje to moje wątpliwości. Dzięki @DibbyDum :>

0
wedlock napisał(a):

polecam strony
http://deely.jogger.pl/2010/04/15/o-mvvm-i-wpf-slow-kilka/
)

Tam jest tylko jedna strona? Czegoś nie widzę? Przykład jest trywialny i raczej niewiele wyjaśnia, a kod tam przedstawiony po prostu brzydko zapisany. :P Ja bym tego nie polecał.

0

Ok, po długim siedzeniu nad różnymi tekstami, wykreował się nowy pogląd na wzorzec. Proszę o zweryfikowanie jego trafności :)

View - tutaj nic się nie zmieniło, wszelkie kontrolki i komendy (zbindowane ze swoim ViewModelem) w postaci kodu XAML oraz Ininicjalizacja komponentów + dopasowanie obiektu ViewModelu do DataContext w Code-Behind.

ViewModel - zawiera zmienne i komendy, do których jest zbindowany widok. W przypadku reakcji użytkownika (np. naciśnięcie przycisku), wywołuje się odpowiednia komenda. ViewModel odpowiada za pobieranie i modyfikowanie informacji w modelu, a także za modyfikowanie informacji w widoku.

Model - baza danych (lub inne rzeczy trzymające informacje np. XML'e) + odpowiednie klasy pozwalające na operacje na tejże bazie. Dodatkowo znajdują się tutaj definicje obiektów (jakieś struktury) których obiekty będą tworzone w ViewModelu.

Rozumiem więc że logika aplikacji (mam tutaj na myśli np. jakieś obliczenia, parsowanie tekstu, weryfikacje danych) znajduje się w ViewModelach? Skoro Model to tylko baza danych + te wrappery to chyba nie ma innego wyjścia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1