从ViewModel关闭并清理视图

时间:2012-06-22 00:00:43

标签: c# wpf xaml mvvm

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

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

  1. 必须处理View的DataContext(ViewModel)
  2. 必须为每个正在关闭的视图调用View.Dispatcher.InvokeShutdown。
  3. 到目前为止,我有一些附加的行为混合到Closing事件来处理清理和ViewModel上的Action就像

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

    处理从ViewModel实际关闭View。

    但这对我来说并不是特别优雅。有没有人有任何其他想法或替代方法?

1 个答案:

答案 0 :(得分:3)

一个想法是使用您正在使用的任何Messaging框架(如MVVM Light中的Messenger,这是我使用的),设置Closing消息(或类似的东西)并有任何需要做某事的事情关闭注册该Closing消息。