WPF: Legatura colore di sfondo di un ListViewItem a una proprietà esadecimale stringa di un oggetto

StackOverflow https://stackoverflow.com/questions/360369

Domanda

Ciao. Ho un oggetto che ha una proprietà stringa denominata BackgroundColor. Questa stringa è la rappresentazione esadecimale di un colore. Non posso cambiare questo oggetto.

Sono vincolante una collezione di questi oggetti per un controllo ListView. Quello che vorrei fare è legare lo sfondo della riga del listview alla proprietà BackgroundColor dell'oggetto che viene visualizzato nella riga.

Qual è il modo migliore per questo?

È stato utile?

Soluzione

Credo che utilizzando un IValueConverter è la soluzione adeguata. Si potrebbe fare un HexConverter che converte il valore esadecimale stringa di colore. Tale nesso dovrebbe iniziare.

Altri suggerimenti

Ti consigliamo di utilizzare uno stile di impegnare la sfondo del ListViewItem alla voce per la riga. La voce è il DataContext di default del ListViewItem quindi questo dovrebbe essere semplice:

<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>

Invece di legame per tutta la voce si legano alla BackgroundColor, ma dovrebbe essere simile al precedente. Hai bisogno di utilizzare un convertitore con il legame ad anteporre un "#", questo è il segnale per il built-in BrushConverter di analizzarlo come esadecimale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top