【发布时间】:2018-04-22 19:50:01
【问题描述】:
我有两个视图(窗口)及其关联的视图模型。第一个,ShellView 和第二个,CreatePersonView。我想要的是,当我单击 ShellView 中的按钮时,它会在新窗口中打开 CreatePersonView。当这个窗口关闭时,父级应该执行一些任务。
感谢您的帮助。
【问题讨论】:
标签: c# wpf mvvm caliburn.micro
我有两个视图(窗口)及其关联的视图模型。第一个,ShellView 和第二个,CreatePersonView。我想要的是,当我单击 ShellView 中的按钮时,它会在新窗口中打开 CreatePersonView。当这个窗口关闭时,父级应该执行一些任务。
感谢您的帮助。
【问题讨论】:
标签: c# wpf mvvm caliburn.micro
您可以使用 EventAggregator 和窗口管理器实现此目的
第 1 步: 单击按钮时调用 CreatePerson 窗口。
public void PersonClick() => _windowManager.ShowDialog(_createPersonVM);
WindowManager 应该在 ShellViewModel 的构造函数中导入。
第 2 步:当 CreatePersonView 关闭时继续在 Shell 中执行任务。您需要为此使用事件聚合器。
public void CloseEvent() => _eventAggregator.PublishOnUIThread(new CloseMsg() {Message = "Hey closed"});
ShellViewModel 需要订阅 CloseMsg (IHandle) 的 eventtaggregator。
这将帮助您实现目标。
如果您需要进一步说明,请告诉我。可以分享完整代码。
【讨论】: