如何在不同项目中的视图/视图模型之间导航
Posted
技术标签:
【中文标题】如何在不同项目中的视图/视图模型之间导航【英文标题】:How to navigate between Views/ViewModels in different projects 【发布时间】:2014-04-17 08:26:26 【问题描述】:我有 3 个用于模型、视图和 ViewModel 的不同项目,还有一个用于 UserControls 的项目。在项目 UserControls 中,我包含了对 ViewModels 的引用,以便我可以将 ViewModels 作为我创建的某些 UserControls 的 DataContext。然后在 Views 项目中,我添加了对 UserControls 项目的引用。 我在我的一个用户控件中有一个按钮,以便显示一个视图,但是这是不可能的,因为我没有对 Views 项目的任何访问权限,并且我无法实例化它们中的任何一个,因为添加了从 Views 到 UserControls 的引用导致循环依赖问题。
现在我需要知道是否有任何解决方案可以解决我的这个问题。如果我没有很清楚地解释我的情况,请告诉我。
提前致谢。
【问题讨论】:
您可能会发现这很有帮助:***.com/questions/21107957/… 【参考方案1】:你有一个设计问题需要解决。
我通常在 MVVM 项目中做的是有一个 Main 项目,它包含在创建的所有视图中。然后,如果需要,您可以拥有 ViewModel 和 Model 项目。 但是创建一个了解您的特定视图的 UserControl 是错误的。您可以做的是将您的 UserControl 放在您的一个视图中,并绑定到“OnClicked”事件,让该事件解析您想要的正确视图。
通常我的 ViewModel 引用我的 Model,而我的 Views 引用我的 ViewModel。这样你就不会遇到循环依赖
【讨论】:
我认为你是对的。我有一个设计问题。实际上我的 Views 项目是我的主要项目。但是视图代码不应该是干净的吗?我的意思是我在教程中看到我们不应该为视图编写任何 c# 代码,并且一切都通过绑定到属性和命令在 xaml 部分中完成。 没错。当您依赖 ViewModel 执行实际工作时,您可以保持视图干净。你用命令绑定到它,让所有的逻辑留在那里,只用 XAML 代码保持你的视图干净以上是关于如何在不同项目中的视图/视图模型之间导航的主要内容,如果未能解决你的问题,请参考以下文章
如何通过主视图模型将 UserControl 内容更改为另一个 UserControl。如何在内容之间导航