我有一个用于边框背景的 MVVM 绑定,其中我从字符串格式的文件中读取颜色名称并使用代码将它们转换为画笔:
Brush b1 = new SolidColorBrush((Color)ColorConverter.ConvertFromString("Red");
myItem.Background = b1;
背景是 ViewModel 中定义的属性:
public Brush Background
{
get { return _background; }
set
{
this._background = value;
RaisePropertyChanged("Background");
}
}
它在 XAML 中被访问为:
<Border Background="{Binding Background}">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Style.Triggers>
<DataTrigger Binding="{Binding Background}" Value="Red">
<Setter Property="Height" Value="40"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
边框颜色正确-那里没有问题。
问题是永远不会触发 DataTrigger,因为当我在 set 方法中看到 this._background 的值时,它是“#FFFF0000”并且它不等于 Brushes.Red(我尝试将值转换为 SolidColorBrush,然后与 Brushes.Red ,但不相等)。
我做错了什么?我该怎么做才能确保从文件中读取的颜色名称正确转换为 Brushes.*,以便我的 DataTrigger 正常工作。
谢谢,
RDV