Nie mogę do końca dowiedzieć się, jak uzyskać model widoku, który ma być powiadamiany o zmianach w modelu, bez dodawania zestawu konkretnych elementów interfejsu, takich jak INotifyProperyChanged i INotifyCollectionChanged w moim modelu lub tworzenia ton różnych zdarzeń i robienia wielu rzeczy czują, że są specyficzne dla interfejsu użytkownika i powinny pozostać poza modelem.Jak zachować logikę widoku z modelu i logiki biznesowej z modelu widoku w MVVM?
W przeciwnym razie musiałbym skopiować całą logikę biznesową w modelu widoku, aby upewnić się, że wszystko jest aktualne, a następnie jaki jest sens posiadania tego modelu?
Jedną z trudnych, które mam w moim modelu, jest właściwość klasy "Kategoria". Możesz myśleć o nim jak o strukturze drzewa, a właściwość to potomkowie węzłów liści. W modelu, którego własność jest generowana w locie rekursywnie przez wszystkie jej dzieci, co jest w porządku i dobrze. Model widoku musi jednak wiązać się z tą właściwością i musi wiedzieć, kiedy się zmienia. Czy powinienem zmienić model, aby dostosować go do modelu widoku? Jeśli to zrobię, model widoku tak naprawdę nie zrobi nic w tym momencie, model podnosi wszystkie niezbędne powiadomienia o zmianach, a widok może po prostu wiązać się bezpośrednio z modelem. Również, jeśli model był czymś, czego nie miałem źródła, w jaki sposób obejść to?
Właściwie INotifyCollectionChanged jest częścią System.Collections.Specialized która znajduje się w pliku WindowsBase.dll. Zawsze uważałem to za dziwne. –
Dobry punkt Cameron. Uważam to za równie kłopotliwe. Uaktualniając moją odpowiedź odpowiednio ... –
Hmm, myślę, że jedyny raz, jaki kiedykolwiek o nich słyszałem, jest dostępny dla samouczków WPF do celów tworzenia kopii danych, ale przypuszczam, że nie ma w nich nic z natury WPF poza tymi, które są używane w WPF. – Davy8