/ / Najlepší spôsob implementácie dočasných prekrytí v MVVM - c #, wpf, mvvm, popup, overlay

Najlepšia cesta k implementácii dočasných prekryvov v MVVM - c #, wpf, mvvm, popup, prekrytie

Píšem aplikáciu, ktorá sa pripája k sieťovým zdrojom.

Keď sa aplikácia pripája, chcem vyskakovať prekryvný obrázok s bežnou grafikou postupu spinney a tlačidlom Zrušiť. Navrhol som a ConnectProgressViewModel a prispôsobenie ConnectProgressView pre prekrytie.

Moja otázka je, čo je najčistejší spôsob, ako zobraziť / skryť prekrytie od materskej ViewModel?

A) Odhalte konštantu ConnectProgressViewModel od môjho rodičovského ViewModel, a mať ConnectProgressView zviažu jeho viditeľnosť ConnectProgressViewModel.IsConnecting vlastnosť.

B) Odhaliť všeobecný Overlay Vlastnosť z rodičovského ViewModel a nastavte ju na ConnectProgressViewModel keď sa chce používateľ pripojiť. Nadradené zobrazenie viaže a ContentControl do tohto Overlay o zvyšok sa stará šablóna majetku a dát.

C) ?

Zdá sa, že prvá funkcionalita viac zapuzdruje funkčnosť, pričom aplikácia sa nemusí starať o zobrazovanie a skrývanie prekrytia, ale vystavenie konštantnej ConnectProgressViewModel po celú dobu sa cíti zle, keď je to len príležitostne.

Zdá sa, že druhý MVVM lepšie vyhovuje ConnectProgressViewModel vytvára sa len vtedy, keď je to potrebné, ale dáva rodičovi viac funkcií a tiež všeobecná vlastnosť Overlay.

na zdravie

EDIT:

Chcel by som objasniť, že tento názor je viac nežzobraziť stav obsadenosti. Umožňuje zrušenie / opakovanie a výber rôznych sieťových zdrojov a pod.

odpovede:

1 pre odpoveď č. 1

Vždy som len použiť BusyIndicator z programu Silverlight Toolkit. Nemá tlačidlo Zrušiť, ale pravdepodobne ho môžete štýlovo vytvoriť. BusyIndicatorIsBusy majetok, ktorý som viazať na IsBusy Vlastnosť na mojom ViewModel. Ak ovládate ovládací prvok tak, aby mal tlačidlo, môžete do príkazu ViewModel pridať príkaz na zrušenie.

editovať

Len som videl, že toto je WPF nie Silverlight. Nie som si istý, či WPF Toolkit má BusyIndicator

Upraviť znova

Vyzerá to ako Rozšírená WPF Toolkit má BusyIndicator. Všimnite si, že s tým nemám žiadne skúsenosti.


1 pre odpoveď č. 2

Chcel by som ísť s niečím ako váš návrhA) a argumentujte, že by ste nemali implementovať niečo ako všeobecné, ako je B, až kým nebudete mať tento stupeň flexibility ako požiadavku, ako napríklad schopnosť zobrazovať rôzne zobrazenia prekrytia.

Udržujte to jednoduché!