WPF: Encuadernación color de fondo de un ListViewItem a una propiedad de cadena hexadecimal de un objeto

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

Pregunta

Hola. 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 vinculante una colección de estos objetos en una vista de lista. Lo que me gustaría hacer es enlazar el fondo de la fila de la vista de lista a la propiedad BackgroundColor del objeto que se muestra en la fila.

¿Cuál es la mejor manera de que esto?

¿Fue útil?

Solución

Creo que el uso de un IValueConverter es la solución apropiada. Se podría hacer una HexConverter que convierte el valor hexadecimal cadena a color. Ese vínculo debe empezar.

Otros consejos

Usted querrá utilizar un estilo para unir los Antecedentes de ListViewItem al elemento de la fila. El tema es el DataContext por defecto de la 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 la unión a un prefijo "#", esta es la señal a la incorporada en el BrushConverter para analizar como hexagonal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top