【发布时间】:2010-08-11 09:24:02
【问题描述】:
我想在c#中将控件填充颜色绑定到一个布尔值,所以如果为假,颜色为红色,如果为真,颜色为绿色。
对 XAML 很陌生,但希望从一开始就养成良好的习惯。
谢谢,
本
【问题讨论】:
-
您能否添加另一个返回所需颜色的属性 BoolAsColor 并将填充颜色绑定到该属性?
-
所以(并为我的无知道歉)让我的布尔值成为一个自定义类,并添加一个填充颜色属性?
我想在c#中将控件填充颜色绑定到一个布尔值,所以如果为假,颜色为红色,如果为真,颜色为绿色。
对 XAML 很陌生,但希望从一开始就养成良好的习惯。
谢谢,
本
【问题讨论】:
存在视图模型以将数据转换为 UI 可以使用的格式,因此在 ViewModel 中创建一个类型为 Color 的属性,用于执行从存储的布尔值到 Color 值的逻辑转换。将此属性称为“DisplayColor”。
每当布尔值改变颜色时(如果它随时间改变),使用 ViewModel 上的INotifyPropertyChanged 接口在“DisplayColor”属性上引发事件。这将确保 UI 在布尔值更改时自行更新。
然后将控件的颜色属性绑定到视图模型的新“DisplayColor”属性(您可能已经将 DataContext 设置为 ViewModel)。
我昨天才第一次这样做:)
【讨论】:
您还可以实现一个IValueConverter,它执行布尔值和颜色之间的转换。然后只需将颜色属性直接绑定到布尔值,但在绑定中指定新的 IValueConverter。
当您无法控制要绑定的类时,此方法特别有用。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx。
【讨论】: