【问题标题】:Wpf \ MVVM - Where should I put view related properties?Wpf \ MVVM - 我应该把视图相关的属性放在哪里?
【发布时间】:2017-08-11 16:51:11
【问题描述】:

我正在使用 MVVM 模式构建 WPF 应用程序。 我有两个条(矩形)应该根据两个数字之间的比率来改变它们的长度。例如,如果我决定总长度为 100,一个数字是 2,另一个是 3,我希望第一个条的长度为 40,第二个长度为 60。

我将这些数字保存为我的 ViewModel 中的属性,但我的问题是应该将条形宽度属性绑定到什么。 我可以为每个条形宽度向 ViewModel 添加另外两个属性,但感觉不对,因为这是特定于视图的。

有什么建议吗?

谢谢,

盖尔

【问题讨论】:

    标签: c# wpf user-interface design-patterns mvvm


    【解决方案1】:

    视图特定的属性应该保留在视图中。 MVVM(或任何 MV* 模式)的思想是将视图与业务逻辑分离。一个常见的误解是认为视图中不能有任何逻辑或属性。虽然您应该将它们最小化,但视图特定的纯属性应该存在于视图中。

    假设您想使用具有不同视图的视图模型,例如针对移动设备的视图模型。条的最大宽度可能不同,但您的视图模型不应该关心这一点。

    希望有帮助

    【讨论】:

    • 谢谢,有道理。我仍然不确定该怎么做,我从 ViewModel 中获取了数字,但是我必须在 View 本身中处理它来计算宽度。你知道应该怎么做(数据绑定的去向)吗?
    • @GalMalka 嗯,我想你可能走错了路。 XAML 的优势之一是您可以轻松创建流畅的布局,您无需担心控件宽度。您在 WPF Grid 容器上布置控件,它会根据窗口大小计算出为每个控件分配多少空间。如果您的视图模型属性是百分比,那么您可以使用值转换器来设置矩形的宽度。有关更多详细信息,请参阅此答案stackoverflow.com/questions/717299/…
    猜你喜欢
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2016-08-25
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多