WPF: привязка цвета фона элемента listview к шестнадцатеричному свойству String объекта

Привет. У меня есть объект, который имеет свойство строки с именем BackgroundColor. Эта строка является шестнадцатеричным представлением цвета. Я не могу изменить этот объект.

Я связываю коллекцию этих объектов с listView. То, что я хотел бы сделать, это связать фон строки списка со свойством BackgroundColor объекта, который отображается в строке.

Каков наилучший способ для этого?

11.12.2008 18:27:28
2 ОТВЕТА
РЕШЕНИЕ

Я думаю, что использование IValueConverter является подходящим решением. Вы можете создать HexConverter, который преобразует шестнадцатеричное значение строки в Color. Эта ссылка должна помочь вам начать.

2
11.12.2008 19:25:05

Вы захотите использовать Стиль, чтобы связать Фон ListViewItem с элементом для строки. Элемент является DataContext по умолчанию для ListViewItem, поэтому это должно быть просто:

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

Вместо привязки ко всему элементу вы будете привязывать к BackgroundColor, но он должен быть похож на выше. Вы должны использовать конвертер с привязкой для префикса «#», это сигнал встроенному BrushConverter, чтобы проанализировать его как шестнадцатеричный.

6
11.12.2008 19:44:55