3

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

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

  1. 视图的 DataContext (ViewModel) 必须被处理和
  2. 必须为每个正在关闭的视图调用 View.Dispatcher.InvokeShutdown。

到目前为止,我已经混合了附加行为来挂钩到 Closing 事件以处理清理和 ViewModel 上的操作,例如

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

处理从 ViewModel 实际关闭视图。

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

4

1 回答 1

3

一个想法是使用您正在使用的任何消息传递框架(例如我使用的 MVVM Light 中的 Messenger),设置关闭消息(或类似的东西)并在关闭注册时有任何需要做的事情对于那个结束消息。

于 2012-06-22T01:59:02.187 回答