Kilka pytań dot. Mvvm i wpf

0

Chciałbym napisać aplikację okienkową w WPF jako projekt hobbistyczny. Nigdy nie używałem winforms ani wpf. Przeszukałem forum w poszukiwaniu tematów związanych z WPF i wiele osób poleciło pytającym bibliotekę Prism. W ramach nauki napisałem kilka trywialnych aplikacji. Skupiałem się na poznaniu w stopniu podstawowym zagadnień: xaml, bindowanie, nawigacja. Zastanawiam się jak powinno się podejść do budowania większych aplikacji, w których dodanie/zmiana funkcjonalności nie powinna być aż tak bardzo uciążliwa.
Jako, że jestem w fazie planowania mojego głównego projektu, chciałbym zapytać o kilka aspektów mvvm i wpf na przykładzie jakiegoś innego prostego projektu. Przykładowo aplikacja - Quiz, która generuje testy na podstawie wczytanych danych. Z mojej obecnej perspektywy stworzyłbym service, który odbierałby pytania i generował quiz poprzez dodawanie odpowiedzi do pytań(1 dobra, 3 unikalne - pobrane z innych pytań). Serwis ten umieściłbym w viewmodelu odpowiedzialnym za prezentacje pytania. Prezentacja danych to wyświetlanie jednego pytanie na view. W tym widoku przycisk 'następny' wywoływałby komendę, pod którą podpięte byłyby metody odpowiedzialne za sprawdzenie odpowiedzi i przeładowanie widoku z następnym pytaniem.

  1. Czy taki ViewModel powinien zawierać logikę w metodzie, która sprawdzałaby poprawność pytań? Czy może powinien być to jakieś service, który jest wstrzykiwany do viewmodelu.
  2. Czy sam model, na którym wykonywane są jakieś operacje w takich services powinien być jakoś upraszczany (tylko do pól wymaganych w view) podczas przekazywania do ViewModelu?
  3. Czy podczas swojej pracy z aplikacjami wpf + prism korzystaliście z weak event pattern? Chodzi mi głównie o kilkukrotną zmianę modelu, którego klasa implementuje interfejs INotifyPropertyChanged.
  4. Code behind? Wystrzegać się całkowicie?
1

Ad. 1. Serwis wstrzykiwany do modelu. ViewModel to tylko most pomiędzy modelem, a widokiem. Nie powinien mieć logiki biznesowej.
Ad. 2. Nie. Na widoku pokazujesz tylko to, co potrzebujesz z modelu.
Ad. 3. Nie korzystałem z Prism. Przy aplikacjach tego typu to jest odpalanie niepotrzebnej machiny. Więc nie odpowiem na to pytanie :)
Ad. 4. Z rozsądkiem. Tak jak ze wszystkim (singletony, goto itd). Unikaj, ale są sytuacje kiedy po prostu jest coś wygodniej zrobić w code behind. Oczywiście wszystko zależy od tego do jakiego celu chcesz tego użyć. Najpierw zastanów się, czy nie można tego zrobić inaczej.

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