MVVM - jak to jest z tym modelem?

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!

DibbyDum
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska, Kraków
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.


Yubby dibby dibby dibby dibby dibby dibby dum..
DibbyDum
http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx I jeszcze tutaj jest opis jak z angielskim masz problem to może tranzlator google CI pomoże. :)
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 :>

wedlock
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Bartoszyce
  • Postów:180
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.

DibbyDum
Wygląda na to że wszystko się zgadza. :P A teraz dość teorii zabieraj się do pisania aplikacji kolejne nie jasności problemy z tym wzorcem wyjdą w trakcie. ;]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.