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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top