Caliburn.Micro-ShowDialog()如何关闭对话框?编辑:新信息,刚刚设法让记录器工作(我真的不知道cm有一个!)并且在尝试使用TryClose()时收到此消息。TryClose需要一个父IConductor或一个带有Close方法或IsOpen属性的视图我已经坚持了几天了,研究已经归零,我之前尝试过发布一个关于这个的问题但没有得到答案所以我想我没有说对。我有一个包含以下代码的视图和视图模型ContentView/Model:ContentView:ContentViewModel:publicvoidNewProject(){NewProjectViewModelviewModel=newNewProjectViewModel(_projectManager);_windowManager.ShowWindow(viewModel);//如果结果为真,我们就有了一个新项目,否则就取消了窗口。if(viewModel.Result){ProjectnewP=newProject(0,viewModel.ProjectNo,viewModel.ProjectName,0,0);_projectManager.Insert(newP);}}和视图模型NewProjectViewModel具有以下内容:publicvoidCreate(){this.Result=true;尝试关闭(真);}像以前一样在对话框的OK按钮上使用message.attach调用。但是问题是TryClose()总是无法关闭对话框,因为我没有caliburn.micro的源代码我无法在TryClose()中进行调试,但也执行(GetView()AsWindow).Close()失败,因为GetView()总是返回null。我完全不知道如何关闭此对话框,因此将不胜感激任何帮助或建议。编辑:因为我似乎没有得到答案,就像以前的问题一样,我假设我缺少信息。为了理解这个问题,我认为这可能与使用视图优先方法有关。在NewProjectView中,我有以下内容:xmlns:cal="http://www.caliburnproject.org"cal:Bind.Model="ShippingClient.ViewModels.NewProjectViewModel"这用于绑定视图模型,而不是通常的自动方式使用过,也许这就是GetView()返回null的原因?你肯定是在踢自己:删除cal:Bind.Model和cal:View.Model绑定......如果你使用的是ViewModel-First(即你正在创建一个视图模型并使用WindowManager或在导体中显示它),然后把视图粘在视图上的模型的所有绑定东西都由CM完成。在这种情况下,您不应使用任何View-First绑定。你实际上在做的是创建你的VM的另一个实例并将它绑定到你的视图......所以你在后台有两个视图模型,一个很好地连接但不再绑定,一个没有连接一个实例是受制于你的观点但不认识指挥。只需删除视图中对视图模型的任何绑定,它就可以工作了!以上就是C#学习教程:Caliburn.Micro–ShowDialog()如何关闭对话框?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
