【发布时间】:2015-04-23 09:00:02
【问题描述】:
我正在寻找 MVVM 视图和 ViewModel 之间 TRUE 分离的良好示例/方式。我什至不想在 View 中引用 ViewModel 或其他方式。
问题描述
只是为了可视化我的问题: 想象3个独立的项目; GUI(视图)、逻辑(ViewModels)和模型。
概览:
如何设置解决方案,以免导致循环引用?
接近
我的一个想法是使用第四个项目作为某种经纪人:
我不喜欢的是 Logic(ViewModel) 项目在这种情况下将是主要项目。或者也许没关系,我只是有奇怪的感觉。
你们觉得呢?
编辑
感谢 Charles Mager,我发现了一篇非常有趣的文章,其中预定义了映射,因此当他调用 ShowDialog 方法时,它会根据映射决定加载哪个 UI。 CodeProject: Showing Dialogs When Using the MVVM Pattern
【问题讨论】:
-
我添加了您的第一张图片,但您的第二张图片似乎相同 - 您要查看吗?
-
谢谢,是的,出了点问题。我替换了第二个链接,所以它现在应该指向正确的图片。
-
最好和最简单的方法之一是使用依赖注入容器(如 Unity)并仅通过接口引用事物。因此,您的视图将有一个名为
IViewModel ViewModel {get;set;}的属性,它会通过解析来自 DI 容器的接口来填充该属性。 -
好的,我去看看,谢谢!
-
谁说你的视图不能知道你的虚拟机?这没有任何意义,因为它必须绑定虚拟机的属性。
标签: c# wpf mvvm view viewmodel