我需要显示一些图表/图表“缩略图”。单击其中一个将显示“展开视图”(在单独的面板中),其中显示更大版本的图表,以及用于查看和操作图表的控件。
会有许多不同的图表,每个图表都以不同的方式绘制我的数据。此外,给定的图表类型可能会出现多次,每次都会绘制不同的数据子集。 “展开”视图中的控件也会因图表类型而异,因此这里没有什么共性。
我很难理解如何在MVVM中对所有这些进行建模,特别是考虑到需要动态创建未知数量的缩略图(在某些情况下需要多个相同类型的实例)。
大声思考,我想我需要一个代表单个缩略图的视图/视图模型(视图包含图表组件,VM会公开要绘制的数据)。我想我还需要一个V / VM用于“缩略图列表”UI,负责创建缩略图并通过集合公开它们以绑定到列表。但它如何实例化这些呢? VM被注入其视图中,表明“缩略图列表”VM必须动态实例化缩略图视图 - 但VM应该不具备视图知识吗?!
最后,当我显示“展开”视图时,(以某种方式)将缩略图中使用的图表组件/视图传递给它是有意义的,以避免再次渲染图表,但是如何?
如果相关/有帮助,我会使用Castle Windsor进行依赖注入,以及Prism的导航功能。
答案 0 :(得分:1)
这确实是一个复杂的话题,......
我建议使用VM来获取图标列表,而不是图标本身。这可能与IconListViewModels
的特性有关。然后你应该考虑ChartViewModelFactory
。它与您的DIC一起使用。
重要的讨论是VM-V婚姻。首先查看或查看模型...如果基于您的视图模型返回匹配视图,则单向也可以是ViewResolver
...这可以依赖于某种约定。因此,最后的步骤可以是询问工厂的视图模型,找到匹配视图将它们粘合在一起并将它们绑定到内容呈现器...
我希望这有助于您入门......