【问题标题】:What is the correct way to control a XAML controls fill color from c#?从 C# 控制 XAML 控件填充颜色的正确方法是什么?
【发布时间】:2010-08-11 09:24:02
【问题描述】:

我想在c#中将控件填充颜色绑定到一个布尔值,所以如果为假,颜色为红色,如果为真,颜色为绿色。

对 XAML 很陌生,但希望从一开始就养成良好的习惯。

谢谢,

【问题讨论】:

  • 您能否添加另一个返回所需颜色的属性 BoolAsColor 并将填充颜色绑定到该属性?
  • 所以(并为我的无知道歉)让我的布尔值成为一个自定义类,并添加一个填充颜色属性?

标签: c# xaml binding


【解决方案1】:

存在视图模型以将数据转换为 UI 可以使用的格式,因此在 ViewModel 中创建一个类型为 Color 的属性,用于执行从存储的布尔值到 Color 值的逻辑转换。将此属性称为“DisplayColor”。

每当布尔值改变颜色时(如果它随时间改变),使用 ViewModel 上的INotifyPropertyChanged 接口在“DisplayColor”属性上引发事件。这将确保 UI 在布尔值更改时自行更新。

然后将控件的颜色属性绑定到视图模型的新“DisplayColor”属性(您可能已经将 DataContext 设置为 ViewModel)。

我昨天才第一次这样做:)

【讨论】:

    【解决方案2】:

    您还可以实现一个IValueConverter,它执行布尔值和颜色之间的转换。然后只需将颜色属性直接绑定到布尔值,但在绑定中指定新的 IValueConverter。

    当您无法控制要绑定的类时,此方法特别有用。

    有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2012-08-30
      • 1970-01-01
      • 2011-11-05
      相关资源
      最近更新 更多