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ď č. 1Vždy som len použiť BusyIndicator
z programu Silverlight Toolkit. Nemá tlačidlo Zrušiť, ale pravdepodobne ho môžete štýlovo vytvoriť. BusyIndicator
má IsBusy
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é!