繁体   English   中英

WPF MVVM应用程序中的高级导航

[英]Advanced Navigation in WPF MVVM Application

我正在开发一个基于WPF的MVVM应用程序,并且有一个问题与我的应用程序中接近视图导航的最佳方式有关。 具体来说,当我有多个可能导致导航的视图时,我感兴趣的是最简洁的方法来实现此导航。

让我总结一下我目前的应用程序布局,以便我可以更好地解释问题。

上图显示了我的主shell的粗略布局。 主导航区域是静态的,并提供许多按钮。 存在主要应用程序功能的按钮,例如状态,配置,诊断等。当按下其中一个按钮时,将设置上下文导航区域的内容。 具体而言,这通过使上下文导航区域包含内容控件来实现,其中Content属性绑定到ViewModelBase类型的单个属性。 此外,视图模型和视图与应用程序资源中的数据模板绑定在一起。

然后,在上下文导航内容控件中填充的特定视图/视图模型提供与在主导航中选择的主要功能相关的附加导航选项。 当在上下文导航中选择选项时,主内容区域的更新方式与先前使用上下文导航所描述的方式完全相同。

所以我想你可以描述MainNavigationContextualNavigation区域的组合, MainNavigation与Outlook Style菜单栏非常相似。 即底部的主要选择,顶部的次要选择,导致主要内容区域的变化。

现在来问题了。 我可以做这个工作,但它开始变得非常混乱! 我有MainNavigationViewModel导致导航,以及多个上下文ViewModels ,它们被填充到ContextualNavigation区域导致导航。 在某些情况下,主要内容区域中的动作也可能也产生导航需求。 我实际上还有一个Ribbon控件,也可能导致一些导航。 所以我的导航遍布整个ViewModels ,我不相信它是可维护的。 PS。 如果您想知道,我目前正在使用信使系统来允许视图模型之间的分离通信。

我开始认为最好的方法是创建一个抽象服务,负责我应用程序中所有视图模型的导航,但不确定它会是什么样子。 我在这里是否正确,如果是这样,是否有人对应用程序范围导航服务有任何建议,处理来自多个视图模型的导航?

首先是你使用的MVVM方法? 首先查看或查看模型?

正确的选择可以让你的生活更轻松。

您已经拥有的想法是正确的方向接口和继承 - 抽象导航层。

如果你已经使用Messanger它实际上遵循类似的方法。 在您的情况下,架构计划将是不必要的,花时间并将其绘制下来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM