Poszukuję "najlepszej praktyki" (jeśli jest nawet najlepsza) do czystego zamykania aplikacji WPF, która używa MEF i PRISM4. Ostatecznie, szukam jakiejś "Zamkniętej usługi", która zarządzałaby wszystkimi zdarzeniami/dowództwami od Shell do dowolnego viewmodelu (lub innych subskrybentów), który chciałby zweryfikować, czy można zamknąć aplikację. Czy agregator zdarzeń jest najczystszym sposobem? Inne opinie/opcje?Zgrabne zamknięcie aplikacji za pomocą WPF PRISM 4
Idealnie byłoby mieć przycisk na moim ToolbarView w moim ToolbarRegion (1 z 2 regionów w moim Shell). Ten przycisk wywołałby polecenie na moim ToolbarViewModel (odwołując się do polecenia na moim ToolbarControler), co z kolei spowodowałoby 2 rzeczy (chyba?) ... Najpierw powiadom wszystkich subskrybentów, że jest to czas zamknięcia i pozwól, aby któryś z nich anulował zamknięcie i ... po drugie, jeśli żadna nie anuluje, jakoś powiadomi powłokę, by się zamknęła. Tryb zamykania mojej aplikacji jest ustawiony na "ShutdownMode.OnMainWindowClose", więc jeśli Shell się zamknie, powinienem wszystko ustawić.
Czy ktoś może mi w tym pomóc?
Podoba mi się ta metoda, ale wciąż mam pytanie. Jak monitorujesz swoje aktywne widoki (lub wyświetlasz modele)? Jaką kolekcję robisz, by wywołać funkcję "CanShutdown()"? Czy korzystasz z aplikacji IRegionManager i wypytujesz aktywne widoki? – Thelonias
Skoro robisz to w Powłoce, możesz po prostu zapytać o zawartość różnych elementów układu, które masz w Powłoce, i iterować nad nimi. Prawdopodobnie jest to możliwe również dzięki IRegionManager, spróbuj zobaczyć, co najlepiej działa w twoim scenariuszu. –