我的应用程序使用著名的 IDialogService 的变体创建了许多子视图。我现在需要在发生特定事件或事件集时以编程方式关闭这些视图。
首先,我应该如何最好地公开 Views 的 Close 方法,请记住
- 视图的 DataContext (ViewModel) 必须被处理和
- 必须为每个正在关闭的视图调用 View.Dispatcher.InvokeShutdown。
到目前为止,我已经混合了附加行为来挂钩到 Closing 事件以处理清理和 ViewModel 上的操作,例如
vm.OnCloseAction = ()=> view.Close();
处理从 ViewModel 实际关闭视图。
不过,这对我来说并不是特别优雅。有没有人有任何其他想法或替代方法?