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.
- 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.
- 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?
- 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.
- Code behind? Wystrzegać się całkowicie?