使用Caliburn.micro调用另一个ViewModel
本文关键字:另一个 ViewModel 调用 micro Caliburn 使用 | 更新日期: 2023-09-27 18:11:58
我有两个视图,分别叫它们A和b。当用户在A上执行一个特定的操作时,我希望它启动b。两个视图都应该保持打开状态。
A继承了导体,我试图调用ActivateItem,但视图B从未打开。
我错过了什么?这是正确的方式调用一个视图从另一个使用Caliburn.micro?
好,如果b视图应该在不同的窗口中,这是最简单的解决方案。我假设AViewModel是'shell'视图模型:
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"/>
单击AView
上的按钮,将显示BView
的新窗口。
导体通常在一个窗口中有多个屏幕(换句话说,一个屏幕上有多个窗格)。有时是OneActive
(例如在WPF中实现导航时)或AllActive
,当同时有多个屏幕可用时。
这里有一个关于一些Caliburn的很好的教程。