Pergunta

Hey. Eu tenho um objeto que tem uma propriedade string chamada BackgroundColor. Essa seqüência é a representação hexadecimal de uma cor. Eu não posso mudar este objeto.

Estou vinculativo uma coleção desses objetos a um listView. O que eu gostaria de fazer é vincular o fundo da linha da listview para a propriedade BackgroundColor do objeto que é exibido na linha.

O que é a melhor maneira da isto?

Foi útil?

Solução

Eu acho que usando um IValueConverter é a solução apropriada. Você poderia fazer um HexConverter que converte o valor hexadecimal string para Color. Essa ligação deve começar.

Outras dicas

Você vai querer usar um estilo para ligar o fundo de ListViewItem para o item para a linha. O item é o DataContext padrão do ListViewItem por isso deve ser simples:

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

Em vez de se ligar a todo o item que vai ligar ao BackgroundColor, mas deve ser semelhante ao anterior. Você tem que usar um conversor com a ligação prefixar um "#", este é o sinal para o built-in BrushConverter para analisá-lo como hex.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top