2008-12-11 37 views
5

Hey. 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 objetoWPF: Enlazando el color de fondo de un listviewitem a un hex. Propiedad de cadena de un 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 hacer esto?

Respuesta

2

Creo que el uso de 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.

6

Querrá utilizar un estilo para vincular el fondo de ListViewItem con el elemento de la fila. El artículo es el valor por defecto de la DataContext ListViewItem por lo que este debe 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 unirse a todo el artículo que usted asocie a la BackgroundColor, pero debe ser similar a la 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.

Cuestiones relacionadas