如何确定属性是应该放在视图中还是放在模型中?

时间:2013-09-06 19:47:55

标签: c# wpf xaml

我想我是否有点担心显示范围之类的属性是否应放在模型中(作为datacontext继承,以便子控件可以轻松绑定到它)或者我是否应该将属性放在graphviewer类,然后让需要访问它的组件拥有它们自己绑定到祖先的属性。绑定到祖先控件或仅绑定模型更清晰吗?我觉得后者更干净,但显示范围显然是视图的属性。

例如。我有一个属性AxisdivisionUnit在滚动查看器中需要,以及几个拇指用于重新计算图形更新的位置。滚动查看器仅在填充顶级控件(graphviewer)中的树视图时出现。所以我可以将属性axisdivisionunit放在graphviewer上,并将属性绑定到scrollviewer和thumb中的属性。或者我可以让拇指和scrollviewer绑定到模型中的属性(viewmodel,如果我更好地完全分离UI。

1 个答案:

答案 0 :(得分:3)

让我看看我是否可以提供帮助..

首先,由于您主要讨论UI上的内容呈现方式,因此我认为该属性根本不在您的模型中。真正的问题是它是属于您的View还是ViewModel。

AxisDivisionUnit,听起来它只是图表外观的一部分。我认为仅仅在视图中更有意义。如果您有一些属性描述了与业务逻辑相关的图形限制,那么在ViewModel中可能会更好,因为您可能想要测试该代码,如果您要替换UI,您仍然需要想要执行那些完全相同的限制。

我想问问自己,“如果我用一个完全不同的图形和UI来替换这个图形以显示相同的数据,我是否必须强制执行相同的逻辑?”如果答案是否定的,那就是你想要为这种情况显示它...然后它属于View,你可以将Control的属性绑定到另一个控件的属性或使用触发器,行为等来实现它在视图中。