【问题标题】:Bind a SolidColorBrush to a DataGridCell/CellStyle from a ViewModel从 ViewModel 将 SolidColorBrush 绑定到 DataGridCell/CellStyle
【发布时间】:2010-10-18 20:11:28
【问题描述】:

我有一个带有属性 int DepartmentColor 的 ViewModel。当然我不能将 int 值绑定到 XAML 中的 CellStyle。

我应该创建一个 IntToStyleConverter 还是应该在 ViewModel 中摸索 Style 类,例如将 int 转换为 SolicColorBrush 并将其分配给 Style 等...

后者是 MVVM 的方式吗?

【问题讨论】:

  • 使用转换器将int转换为brush,各方面都更简单。

标签: wpf mvvm viewmodel converter


【解决方案1】:

走转换器路线。此外,我会将属性命名为Department 的效果,而不是将颜色与其绑定,因为它使它与 UI 更紧密地耦合。虽然部门可能会计将其与颜色相结合,这意味着您确定它将通过Color 表示,而在下游,它可能以其他一些视觉方式表示。您也可以提前创建样式,然后简单地选择一个并通过转换器应用它,而不是尝试在后面的代码中创建它们。

【讨论】:

  • 对属性 Department 或 DepartmentColor 的命名有何不同?部门已经为部门的名称保留......也许我应该解释一下:我有一个带有 DataGrid 的组织者/日历,其中每个部门都有自己的背景色。所以命名为 DepartmentBackColor 并没有错,为什么要错呢?根据您的建议:当我创建样式时,我会在代码隐藏中创建它们......我假设这是你没有写的,我应该在 ViewMode 中创建它们。
  • 我认为您不应该将 UI 类型引用推送到 ViewModel 中。颜色与 UI 有直接关系。允许 UI 确定如何处理部门类型,在这种情况下可能恰好是颜色。在 ResourceDictionary 中将样式创建为可重用样式,然后可以在后面的代码中引用(转换器)。
  • 如果我有一个具有名为 DepartmentColor 的属性的模型,我会理解你的论点。但是它的 ViewModel 的属性 DepartmentColor 和 ViewModel 直接绑定到 View。那么为什么不系“颜色”呢?我觉得完全没问题。
猜你喜欢
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多