0

我需要显示一些图形/图表“缩略图”。单击其中一个将显示“扩展视图”(在单独的面板中),该视图显示更大版本的图表,以及用于查看和操作图表的控件。

会有许多不同的图表,每个图表都以不同的方式绘制我的数据。此外,给定的图表类型可能会出现多次,每次都绘制不同的数据子集。“扩展”视图中的控件也会因一种图表类型而异,因此这里几乎没有共性。

我正在努力弄清楚如何在 MVVM 中对所有这些进行建模,特别是考虑到需要动态创建未知数量的缩略图(在某些情况下还有多个相同类型的实例)。

大声思考,我想我需要一个表示单个缩略图的视图/视图模型(视图包含图表组件,VM 公开要绘制的数据)。我想我还需要一个用于“缩略图列表”UI 的 V/VM,负责创建缩略图并通过集合公开它们以绑定到列表。但是它是如何实例化这些的呢?虚拟机被注入到它的视图中,这表明“缩略图列表”虚拟机必须动态实例化缩略图视图——但虚拟机不应该知道视图吗?!

最后,当我显示“扩展”视图时,(以某种方式)将缩略图中使用的图表组件/视图传递给它是有意义的,以避免再次渲染图表,但是如何?

如果相关/有帮助,我将使用 Castle Windsor 进行依赖注入,以及 Prism 的导航功能。

4

1 回答 1

1

这确实是一个复杂的话题,...

我会为图标列表建议一个虚拟机,而不一定是图标本身。这可以绑定到 的属性IconListViewModels。然后你应该考虑一个ChartViewModelFactory. 它与您的 DIC 配合使用。

一个重要的讨论是 VM-V 的结合。首先查看或首先查看模型...一种方法也可能是ViewResolver根据您的视图模型返回匹配的视图...这可以依赖于某种约定。所以最后的步骤可能是向工厂询问视图模型,找到匹配的视图将它们粘合在一起并将它们绑定到内容呈现器......

我希望这有助于你开始......

于 2013-02-18T13:39:19.360 回答