WPF: Binden einer Hintergrundfarbe des ListViewItem zu einem Hex-String-Eigenschaft eines Objekts
-
21-08-2019 - |
Frage
Hey. Ich habe ein Objekt, das eine String-Eigenschaft namens Background hat. Diese Saite ist die hexadezimale Darstellung einer Farbe. Ich kann dieses Objekt nicht ändern.
Ich bin Bindung eine Sammlung dieser Objekte zu einem Listview. Was würde Ich mag es, bindet den Hintergrund der Listenansicht der Reihe zur Background Eigenschaft des Objekts tun, die in der Zeile angezeigt wird.
Was ist der beste Weg, um zu diesem?
Lösung
Ich denke, mit einem IValueConverter ist die geeignete Lösung. Sie könnten eine HexConverter machen, die die Zeichenfolge Hex-Wert auf Farbe umwandelt. Diese Verbindung sollte man beginnen.
Andere Tipps
Sie wollen einen Stil verwenden, um den Hintergrund der ListViewItem das Element für die Zeile zu binden. Der Artikel ist die Standard-Datacontext des ListViewItem so sollte dies einfach:
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid.Resources>
<x:Array x:Key="colors" Type="{x:Type sys:String}">
<sys:String>Red</sys:String>
<sys:String>Yellow</sys:String>
<sys:String>#0000FF</sys:String>
</x:Array>
</Grid.Resources>
<ListView ItemsSource="{StaticResource colors}">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="{Binding .}"/>
</Style>
</ListView.Resources>
</ListView>
</Grid>
Statt auf das gesamte Element binden Sie an die Background binden werden, aber es sollte auf die oben ähnlich sein. Sie haben haben einen Konverter mit der Bindung zu verwenden, um einen „#“ voranstellen, dann ist dies das Signal an den BrushConverter eingebauten darin als Hex zu analysieren.