gpt4 book ai didi

c# - WPF Caliburn.Micro/mvvm 导航

转载 作者:太空狗 更新时间:2023-10-29 20:56:44 26 4
gpt4 key购买 nike

我正在构建一个项目,到目前为止我遇到的最大问题之一是导航。
我一直在寻找 caliburn.micro/mvvm 导航的例子,但它们似乎都很长,我不太能理解其中的大部分内容(这里是初学者!)。

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

我目前有:ShellViewModel.cs、MainViewModel.cs、我的模型和我的 View 。现在,我只需要知道如何在启动时将 MainViewModel 加载到 shellviewmodel 中(使用 contentcontrol/frames...),以及如何从一个页面移动到另一个页面。

您也可以按要点来写,然后将我链接到一些有用的示例,我相信我可以从那里继续。最好如果可能对内容进行彻底的解释。

最佳答案

阅读 Conductors and Screens关于官方文档。

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

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive

然后您可以将 ConductorActiveItem 设置为您希望当前处于事件状态的 View 模型实例:

this.ActivateItem(myMainViewModel);

集合 Conductor 类型还提供了一个 Items 集合,您可以在实例化新窗口时填充它。此 Items 集合中的 View 模型可能是那些当前已停用但尚未关闭的 View 模型,您可以使用上述 ActivateItem 来激活它们。通过在 ShellView 中使用带有 x:Name="Items"ItemsControl,还可以非常轻松地创建打开窗口的菜单。

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

<ContentControl x:Name="ActiveItem" />

然后,您可以通过重写该类中的 OnActivate/OnDeactivate 来响应 MainViewModel 中的激活/停用。

关于c# - WPF Caliburn.Micro/mvvm 导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16545750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com