2011-06-09 58 views
2

我们有一个TreeView中的项目列表,用户可以在其中选择他们想要的项目。每个项目都可以与另一个项目相关联。我在我的ItemEditor视图上有一个按钮,以只读模式打开一个新窗口,并显示关联的项目。该项目的只读副本没有保存功能,也没有提供以前用户进行的任何编辑。然而它分享90%的领域,大约50个。高效地重新使用视图

我几乎重复整个视图,并创建一个纯粹的ReadOnlyItemViewModel?或者,在我的视图模型中设置标志以显示隐藏哪些可编辑项目通常更可接受?

回答

1

您可以将多个视图映射到同一个视图模型上。这实际上是鼓励。您不必制作ReadOnlyItemViewModel ...只需在ItemViewModel上创建一个View即可。如果您尝试自动生成视图,请确定它是生成只读还是完全可编辑视图生成器的策略。如果您需要更多细粒度控制,请考虑添加属性,以表明字段应以只读还是可编辑模式显示。只有在探索了所有这些途径之后,才能考虑将VM分成两部分。

+0

不错的答案。您能否详细谈谈您在何处讨论如何生成只读或完全可编辑的视图策略?谢谢。 – gcso 2011-06-09 22:59:54

+0

由于WPF的声明性质,您可以非常方便地动态创建视图。 (事实上​​,Silverlight DataForm控件就是这么做的)。您可以创建一个类似于Dataform的控件,并将其扩展为基于属性生成只读版本的功能。 – 2011-06-09 23:49:07