WPF Caliburn.Micro/mvvm导航

Asa*_*saf 6 c# wpf mvvm caliburn.micro

我正在建设一个项目,直到现在我遇到的最大问题之一是导航.
我一直在寻找一些时间用于caliburn.micro/mvvm导航的例子,但它们似乎都很长,我真的不太了解它(初学者在这里!).

关于我的项目的一些信息:
我希望有一个外部窗口/外壳,菜单链接/选项卡根据在shell内部部分内部单击的按钮打开页面,并且能够打开从一个内部更改页面.

我目前有:ShellViewModel.cs,MainViewModel.cs,我的模型和我的观点. 现在,我需要知道的是如何在启动时使用contentcontrol/frames ...加载MainViewModel并使用contentcontrol/frames ...,以及如何从一个页面移动到另一个页面.

你也可以用点来写它,并把我链接到一些有用的例子,我相信我可以从那里继续.如果可能的话,最好彻底解释一下这些东西.

dev*_*tal 11

在官方文档中阅读有关导体和屏幕的内容.

举个简单的例子,您ShellViewModel可以是Conductor一个活动屏幕(即一次只有一个屏幕变为活动/非活动状态):

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive
Run Code Online (Sandbox Code Playgroud)

然后,您可以设置ActiveItemConductor,以你希望成为当前活动视图模型实例:

this.ActivateItem(myMainViewModel);
Run Code Online (Sandbox Code Playgroud)

集合Conductor类型还提供了一个Items集合,您可以在实例化新窗口时填充该集合.此Items集合中的Viewmodel 可能是当前已停用但尚未关闭的视图模型,您可以使用ActivateItem上述方法激活它们.它还可以通过在您的内容中使用ItemsControlwith 来创建打开的窗口菜单.x:Name="Items"ShellView

然后,要创建ShellView,您可以使用a ContentControl并将其名称设置为与ActiveItem属性相同,Caliburn.Micro将完成剩下的工作:

<ContentControl x:Name="ActiveItem" />
Run Code Online (Sandbox Code Playgroud)

然后,您可以MainViewModel通过覆盖OnActivate/ OnDeactivate在该类中响应激活/取消激活.