To naprawdę zależy od architektury aplikacji, ale oto jak to zrobić z Prism.
pierwsze chcę powiedzieć, że jest ok mieć swoje odniesienie VM widoku tylko tak długo, jak nie jest to konkretna realizacja View, czyli odniesienia przez interfejs.
Poślubię View i ViewModel za pomocą wtrysku zależności, bardzo podobny do tego, jak to zrobić w StockTraderRI. Mam więc IView i IViewModel. IViewModel ma proprium o nazwie "Widok" typu IView.
Z warstwy kodu (dla mnie, zwykle kontroler ... patrz StockTraderRI), która współpracuje z twoimi regionami, dodaj mechanizm, aby usunąć swój widok z regionu.
Na przykład:
myRegion.Remove(myIViewModel.View);
Jeśli regiony są obsługiwane przez sterownik, może chcesz umieścić proste zdarzenie na VM powiadomić, gdy VM chce być „zamknięty”. Możesz także eksperymentować z IEventAggregatorem, jeśli chcesz użyć słabego modelu zdarzeń. Jeśli region jest obsługiwany w VM, po prostu dodaj tam ten kod.
z cennych uwag od członków i udało się to pomyślnie zakodować. przykładowa klasa implementacji jest publikowana jako odpowiedź na to pytanie. – Raj