MVVM: co všechno může model vědět o view rubrika: Programování: .Net
Zdravím ve spolek,
aktuálně řešíme tento problém.
Aplikace je postavena na WPF/PRISM, modely máme striktně odděleny od prezenční části (Views).
Přesto bychom potřebovali nějakou vazbu/referenci na view, které je nad modelem.
Nyní toto řešíme formou commandů do kterých je z views předáván parametr s rozhraním na view. Příslušný command pak může vykonat potřebnou interakci s view dle dostupného rozhraní.
Problém:
Model vykonává na pozadí ve vlákně nějakou déle trvající operaci spuštěnou buď automaticky anebo nějakým povelem uživatele či získáním signálu z vnějšku.
Během práce nebo typicky při ukončení vlákna je opět potřeba nějak pracovat s view. Konkrétně automaticky view zavřít.
Prakticky uvažujeme, že jeden model může mít na sobě "pověšeno" i více views.
Jak toto vyřešit:
-
při přiřazování modelu k view mu předat rozhraní anebo nějaký identifikátor na dané view (něco jako void Add(IView view) a následně v případě potřeby zavolat z modelu metody rozhraní IView (např. Close)
- mít na view definovanou událost, která bude při přiřazování modelu k view na něj napojena. Model poté v případě potřeby projede seznam s připojenými callbacky do view a zavolá je s nějakým parametrem a view se postará o zbytek
Případně máte jinou radu?
Díky.
ViewModel musi byt ulne nezavisly na View.
Pozor neplati naopak.
View muze o ViewModel vedet uplne vse, dokonce ho vytvorit.
PRISM je pekny framework, ale komunitou celkem neaktivni. Chteli jsme ho pouzit, ale nakonec jsme zvolili reactiveui
ReactiveUi nam bezi ve winForms, WPF a na Xamarinu. Musim podotknout, ze vezmeme jen ViewModel, testy a vse ostatni uz je jen o dodelani Views na danou platformu.
Pro zobrazení všech 5 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře