【发布时间】:2012-03-23 19:54:57
【问题描述】:
我正在尝试一个包含 Prism 和 MEF 的 WPF 应用程序,并试图更好地理解 MVVM 模式。我以前做过这个,虽然我有一个我很满意的工作解决方案,但我不相信我会忠于 MVVM 模式,因为我最终得到的视图模型暴露了很多事件处理程序和背后的代码处理这些事件的视图。这些事件的主要目的是根据初始视图中的选择打开其他视图(例如编辑对话框)。
到目前为止(这次)我已经使用 PRISM 创建了一个 shell 应用程序,我有一些区域,我可以创建视图并将它们添加到这些区域。我还使用 MEF 将解决方案模块化,并通过 IoC 自动将视图模型提供给视图。再次,这有效 - 在一定程度上......
我的问题是创建一些视图模型。到目前为止,我已经创建了包含数据库列表的模型。这些工作以及到目前为止我拥有的大多数代码是和具有 [ImportingConstructor] 属性的附加构造函数,以确保我获得视图模型。目前我对此感到满意(但稍后可能会查看选项)。
我的下一步是提供一个新视图来编辑其中一个列表中的项目(这基本上是一个打开编辑对话框的经典主列表)。这是我看不到 MVVM/MEF 做事方式的地方 - 我找不到基于列表中当前选定项将参数传递给视图模型构造函数的方法。
我知道我想在这里成为一个纯粹主义者。我也知道后面的代码没有错。不过,我想看看乌托邦式的实现是否真的可以实现。
那么,你会怎么做呢……
给定一个带有选定项目的列表,打开一个新视图(InteractionRequest?),其视图模型包含(a)列表中选择的实际项目或(b)至少某种对它的引用或可用于从数据存储中再次检索项目的属性之一?
【问题讨论】: