1

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

4

1 に答える 1