Ich habe eine MVVM für Border Hintergrundbindung, wo in I Farbnamen aus einer Datei im String-Format lesen und wandeln sie um den Code zu Pinsel:Pinsel MVVM Bindung gibt nicht die Farbe namens
Brush b1 = new SolidColorBrush((Color)ColorConverter.ConvertFromString("Red");
myItem.Background = b1;
Hintergrund ist ein definierte Eigenschaft in Ansichtsmodell als:
public Brush Background
{
get { return _background; }
set
{
this._background = value;
RaisePropertyChanged("Background");
}
}
Und es wird in XAML als zugegriffen:
<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>
Die Grenze ist richtig eingefärbt - keine Probleme.
Das Problem ist DataTrigger wird nie ausgelöst, da, wenn ich den Wert von this._background in der Methode set sehen, ist es "# FFFF0000" und es ist nicht gleich Brushes.Red (ich habe versucht, Wert in SolidColorBrush zu konvertieren und dann verglichen mit Brushes.Red, aber es ist nicht gleich).
Was mache ich falsch? Was kann ich tun, um sicherzustellen, dass die Farbnamen, die ich aus einer Datei gelesen habe, richtig in Brushes konvertiert wurden. * Damit mein DataTrigger funktioniert.
Danke,
RDV
Dank Ed Plunkett, Background.Color war der Trick! – RDV