wpf listview binding colors listviewitem

WPF: Enlazando el color de fondo de un listviewitem a una propiedad de cadena hexagonal de un objeto



binding colors (2)

Oye. Tengo un objeto que tiene una propiedad de cadena llamada BackgroundColor. Esta cadena es la representación hexadecimal de un color. No puedo cambiar este objeto

Estoy vinculando una colección de estos objetos a un listView. Lo que me gustaría hacer es enlazar el fondo de la fila de la lista de lista con la propiedad BackgroundColor del objeto que se muestra en la fila.

¿Cuál es la mejor manera de esto?


Creo que usar un IValueConverter es la solución adecuada. Puedes hacer un HexConverter que convierta el valor hexadecimal de la cadena en Color. Ese enlace debería ayudarte a comenzar.


Querrá utilizar un Estilo para enlazar el Fondo de ListViewItem con el elemento de la fila. El elemento es el DataContext predeterminado de ListViewItem, por lo que debería ser sencillo:

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

En lugar de enlazar al elemento completo, se vinculará al BackgroundColor, pero debería ser similar al anterior. Usted tiene que usar un convertidor con el enlace para agregar un "#", esta es la señal al BrushConverter incorporado para analizarlo como hexadecimal.