Caliburn.micro 通过单击按钮打开 window
Caliburn.micro open window by clicking button
我有两个视图 (windows) 及其关联的 ViewModel。第一个是 ShellView,第二个是 CreatePersonView。我想要的是,当我单击 ShellView 中的按钮时,它会在新 window 中打开 CreatePersonView。当这个 window 关闭时,父级应该执行一些任务。
感谢您的帮助。
您可以使用 EventAggregator 和 Window Manager
实现此目的
第一步:
单击按钮时调用 CreatePerson window。
public void PersonClick() => _windowManager.ShowDialog(_createPersonVM);
WindowManager 应该在 ShellViewModel 的构造函数中导入。
第 2 步:在关闭 CreatePersonView 后继续 Shell 中的任务。您需要为此使用事件聚合器。
public void CloseEvent() => _eventAggregator.PublishOnUIThread(new CloseMsg() {Message = "Hey closed"});
ShellViewModel 需要订阅 CloseMsg (IHandle) 的事件聚合器。
这将帮助您实现目标。
如果您需要进一步说明,请告诉我。可以分享完整的代码。
我有两个视图 (windows) 及其关联的 ViewModel。第一个是 ShellView,第二个是 CreatePersonView。我想要的是,当我单击 ShellView 中的按钮时,它会在新 window 中打开 CreatePersonView。当这个 window 关闭时,父级应该执行一些任务。
感谢您的帮助。
您可以使用 EventAggregator 和 Window Manager
实现此目的第一步: 单击按钮时调用 CreatePerson window。
public void PersonClick() => _windowManager.ShowDialog(_createPersonVM);
WindowManager 应该在 ShellViewModel 的构造函数中导入。
第 2 步:在关闭 CreatePersonView 后继续 Shell 中的任务。您需要为此使用事件聚合器。
public void CloseEvent() => _eventAggregator.PublishOnUIThread(new CloseMsg() {Message = "Hey closed"});
ShellViewModel 需要订阅 CloseMsg (IHandle) 的事件聚合器。
这将帮助您实现目标。
如果您需要进一步说明,请告诉我。可以分享完整的代码。