【发布时间】:2023-03-07 01:33:02
【问题描述】:
我们正在设计一个 xbap 应用程序,该应用程序具有复杂的、用户可配置的导航流程,该流程取决于模型的状态\用户安全等以及其他一些环境因素。
应用程序有一个容器视图,它在框架内加载用户特定的控件,我想知道在单独的控制器或容器视图的视图模型中具有导航逻辑的首选做法是什么。..
【问题讨论】:
标签: wpf architecture mvvm navigation
我们正在设计一个 xbap 应用程序,该应用程序具有复杂的、用户可配置的导航流程,该流程取决于模型的状态\用户安全等以及其他一些环境因素。
应用程序有一个容器视图,它在框架内加载用户特定的控件,我想知道在单独的控制器或容器视图的视图模型中具有导航逻辑的首选做法是什么。..
【问题讨论】:
标签: wpf architecture mvvm navigation
我会将导航流代码放在全局控制器或某种服务中。您可能不希望您的视图或视图模型具有这样的逻辑,因为它们会为它们带来相当多的依赖关系,尤其是在您的流程非常复杂和可定制的情况下。相反,您希望这些视图和视图模型易于进行单元测试,在这种情况下,它们会将完成后发生的事情推迟到处于更好位置的人来做出适当的决定。
【讨论】:
我认为为Hyperlink.RequestNavigate 连接一个顶级路由事件处理程序和为NavigationCommands.GoToPage 连接一个CommandBinding 将是足够的分离级别。您还在寻找更多吗?
【讨论】:
Drew,有机会对此进行更多解释。我喜欢这个解决方案,但我正在学习,但不太了解如何将其付诸实践,特别是如果 viewModel 中有特殊逻辑来确定下一步导航的位置。
【讨论】: