2017-08-24 87 views
1

这一直在我脑海中一段时间​​。比方说,我有一个简单的应用程序在WPF中使用一个画布内的单个矩形。我可以用Canvas.Left和Canvas.Top在mousemove上移动这个矩形。但是,让我们说我也想改变这个矩形的颜色,根据一些计算并改变它的宽度和高度。我可以通过绑定我的viewmodel中的依赖属性来实现。然而,随着我的项目进展,我的视角模型变得越来越大。我很想将它的一些逻辑封装在分离的对象中。所以我为我的Rectangle创建了一个类,其中包含诸如背景,posX,posY,宽度和高度等属性。WPF MVVM,我应该在哪里放置视图特定的属性?

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

感谢您的回答。

+1

你应该有模型'Rectangle'与POSX,波西,颜色。在Vm中,您可以通过绑定视图来实现模型。如果您的视图模型变得太大,您可以重构更常见的元素,例如, 'CalculatePositionOffset'可以在其他类中,如果它可以计算其他事情的位置偏移量。有时候虚拟主机很大,就是这样。 – FCin

回答

5

视图模型公开视图绑定到的属性,例如您的背景,posX,posY,宽度和高度属性。这就是视图模型的用途。实际的业务逻辑与演示无关,属于模型。

所以你的“视图特定”属性肯定属于视图模型类。这些特性通常不会依赖项属性,而是简单地CLR性质,尽管但这是它自己的故事:

INotifyPropertyChanged vs. DependencyProperty in ViewModel

相关问题