WPF MVVM,我应该在哪里放置特定于视图的属性?

时间:2017-08-24 17:09:55

标签: c# wpf mvvm

我已经想了一会儿。让我们说我有一个简单的应用程序在WPF中制作,在画布中有单个矩形。我可以在mousemove上使用Canvas.Left和Canvas.Top移动此矩形。但是,我想说我也希望根据一些计算改变这个矩形的颜色并改变它的宽度和高度。我可以通过从我的viewmodel绑定依赖项属性来做到这一点。然而,随着我的项目进展,我的视图模型变得越来越大。我希望将它的一些逻辑封装在分离的对象中。所以我为我的Rectangle创建了一个类,包含background,posX,posY,width和height等属性。

问题是,所有这些属性都是特定于视图的。换句话说,这个对象并不属于应用程序的商务逻辑(如果我理解这些概念,我还在学习)。所以问题是,我应该在哪里包含这个对象的类?在模型中或MVVM的辅助层中。

感谢您的回答。

1 个答案:

答案 0 :(得分:5)

视图模型公开视图绑定的属性,例如你的背景,posX,posY,width和height属性。这就是视图模型的用途。实际的业务逻辑与表示无关,属于模型。

因此,您的“视图特定”属性当然属于视图模型类。这些属性通常不是依赖属性,而是简单的CLR属性,但这是它自己的故事:

INotifyPropertyChanged vs. DependencyProperty in ViewModel