Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Caliburn.micro通过单击按钮打开窗口_C#_Wpf_Mvvm_Caliburn.micro - Fatal编程技术网

C# Caliburn.micro通过单击按钮打开窗口

C# Caliburn.micro通过单击按钮打开窗口,c#,wpf,mvvm,caliburn.micro,C#,Wpf,Mvvm,Caliburn.micro,我有两个视图(窗口)及其关联的视图模型。第一个是ShellView,第二个是CreatePersonView。我想要的是,当我在ShellView中单击一个按钮时,它会在一个新窗口中打开CreatePersonView。当此窗口关闭时,父级应该执行一些任务 感谢您的帮助。您可以通过EventAggregator和窗口管理器实现这一点 步骤1: 单击按钮时调用CreatePerson窗口 public void PersonClick() => _windowManager.ShowDial

我有两个视图(窗口)及其关联的视图模型。第一个是ShellView,第二个是CreatePersonView。我想要的是,当我在ShellView中单击一个按钮时,它会在一个新窗口中打开CreatePersonView。当此窗口关闭时,父级应该执行一些任务


感谢您的帮助。

您可以通过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)的eventaggregator

这将帮助你实现你的目标


如果您需要进一步澄清,请告诉我。可以共享完整的代码。

您能解释一下如何在构造函数中导入WindowManager吗?您好,您可以在构造函数中执行以下操作。[ImportingConstructor]公共ShellViewModel(IWindowManager windowManager){{u windowManager=windowManager;}@Anu Viswan:能否显示所给示例的完整代码?我面临着同样的问题,也不知道如何完成这个“钩子”。