c#-关闭并清理ViewModel中的视图

我的应用程序使用著名的IDialogService的变体创建了许多子视图.现在,我需要在发生特定事件或一组事件时以编程方式关闭这些视图.

首先,请记住,我最好如何公开Views的Close方法

>必须处置View的DataContext(ViewModel)并
>必须为每个正在关闭的View调用View.Dispatcher.InvokeShutdown.

到目前为止,我混合了一些附加的行为来挂入Closing事件以进行清理,以及对ViewModel进行操作,例如

vm.OnCloseAction = ()=> view.Close();

从ViewModel处理实际关闭View.

不过,这对我来说并不特别优雅.有人还有其他想法或替代方法吗?

解决方法:

一种想法是使用您正在使用的任何消息传递框架(例如MVVM Light中的Messenger,这就是我所使用的),设置关闭消息(或类似的东西),并具有需要在关闭注册时执行某些操作的任何内容该结束消息.

上一篇:c#-访问窗口资源内部的命名元素


下一篇:沿XAML Shapes.Path获取点