我有两个视图调用它们A和B.当用户对A执行特定操作时,我希望它启动B.两个视图都应该保持打开状态。使用Caliburn.micro调用另一个ViewModel
A继承了Conductor,我试图调用ActivateItem,但视图B永远不会打开。
我错过了什么?这是使用Caliburn.micro调用另一个视图的正确方法吗?
我有两个视图调用它们A和B.当用户对A执行特定操作时,我希望它启动B.两个视图都应该保持打开状态。使用Caliburn.micro调用另一个ViewModel
A继承了Conductor,我试图调用ActivateItem,但视图B永远不会打开。
我错过了什么?这是使用Caliburn.micro调用另一个视图的正确方法吗?
好的,如果B视图应该在不同的窗口中,这是最简单的解决方案。我假设AViewModel是“壳”的视图模型:
public class AViewModel // : Screen - that's optional right here ;)
{
private readonly BViewModel bViewModel;
private readonly IWindowManager windowManager;
public AViewModel(BViewModel bViewModel, IWindowManager windowManager)
{
this.bViewModel = bViewModel;
this.windowManager = windowManager;
}
public void ShowB()
{
windowManager.ShowWindow(bViewModel); //If you want a modal dialog, then use ShowDialog that returns a bool?
}
}
和最简单的意见(AView):
<Button Name="ShowB" Content="Show another window"/>
它会显示与BView
新的窗口,当你点击一个按钮在AView
。
导体用于在一个窗口中显示多个屏幕(或换句话说,在一个屏幕上显示多个窗格)。有时它是OneActive
(例如,当在WPF中实现导航时)或AllActive
(当一次有多个屏幕可用时)。
Here's关于Caliburn.Micro的一些基础知识和该特定部分描述窗口管理器的一个很好的教程。
谢谢,这给了我我需要的东西。该教程写得很好,应该也能帮上忙。 – Kelly 2013-05-03 20:23:20
你想在另一个窗口启动B-view吗?或者你将在一个窗口中有多个屏幕? – 2013-05-03 20:04:25
我想在另一个窗口中启动它。 A和B都应该显示在自己的窗口中。 – Kelly 2013-05-03 20:06:21