Border background の MVVM バインディングがあり、ファイルから色名を文字列形式で読み取り、コードを使用してそれらを Brush に変換します。
Brush b1 = new SolidColorBrush((Color)ColorConverter.ConvertFromString("Red");
myItem.Background = b1;
Background は、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>
境界線は適切に色付けされています。問題はありません。
問題は、set メソッドで this._background の値を見ると「#FFFF0000」であり、Brushes.Red と等しくないため、DataTrigger がトリガーされないことです (値を SolidColorBrush に変換してから、Brushes.Red と比較してみました) 、しかし等しくない)。
私が間違っていることは何ですか?ファイルから読み取った色名が適切に Brushes.* に変換され、DataTrigger が正常に動作するようにするにはどうすればよいですか。
ありがとう、
RDV