我的应用程序使用著名的IDialogService的变体创建了许多子视图.现在,我需要在发生特定事件或一组事件时以编程方式关闭这些视图.
首先,请记住,我最好如何公开Views的Close方法
>必须处置View的DataContext(ViewModel)并
>必须为每个正在关闭的View调用View.Dispatcher.InvokeShutdown.
到目前为止,我混合了一些附加的行为来挂入Closing事件以进行清理,以及对ViewModel进行操作,例如
vm.OnCloseAction = ()=> view.Close();
从ViewModel处理实际关闭View.
不过,这对我来说并不特别优雅.有人还有其他想法或替代方法吗?
解决方法:
一种想法是使用您正在使用的任何消息传递框架(例如MVVM Light中的Messenger,这就是我所使用的),设置关闭消息(或类似的东西),并具有需要在关闭注册时执行某些操作的任何内容该结束消息.