2017-08-11 76 views
2

我正在构建一个使用MVVM模式的WPF应用程序。 我有两个酒吧(长方形),应该根据两个数字之间的比例更改他们的长度。例如,如果我决定总长度为100,一个数字是2,另一个是3,我想第一个长度为40,第二个长度为60.Wpf MVVM - 我应该在哪里放置视图相关的属性?

我有这些数字作为属性保存在我的ViewModel中,但是我的问题是bars width属性应该绑定到什么位置。 我可以为ViewModel的每个条宽增加两个属性,但它感觉不对,因为这是特定的视图。

有什么建议吗?

感谢,

回答

3

查看特定的属性应该保持在视图中。 MVVM(或任何MV *模式)的想法是将视图与业务逻辑分开。一个常见的误解是认为你不能在视图中有逻辑或属性任何。虽然你应该尽量减少它们,但纯视觉特性应该住在视野中。

想象一下,您希望使用不同视图的视图模型,比如针对移动设备的视图模型。条的最大宽度可能不同,但您的视图模型不应该在意这一点。

希望有帮助

+0

谢谢,它是有道理的。 我仍然不确定如何做,我从ViewModel中获取数字,但是我必须在View中处理它以计算宽度。你知道应该怎么做(数据绑定在哪里)? –

+0

@GalMalka嗯,我想你可能会以这种错误的方式。 XAML的优势之一是您可以轻松创建流体布局,并且无需担心控制宽度。您将控件布置在WPF Grid容器上,并根据窗口大小计算出分配每个控件的空间大小。如果您的视图模型属性是一个百分比,那么您可以使用值转换器来设置矩形的宽度。看到这个答案更多细节https://stackoverflow.com/questions/717299/wpf-setting-the-width-and-height-as-a-percentage-value/717358#717358 –

相关问题