WPF:Привязка цвета фона listviewitem к свойству шестнадцатеричной строки объекта

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

Вопрос

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

Я привязываю коллекцию этих объектов к ListView.Что я хотел бы сделать, так это привязать фон строки listview к свойству backgroundColor объекта, который отображается в строке.

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

Это было полезно?

Решение

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

Другие советы

Вы захотите использовать стиль для привязки фона 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 для анализа его как шестнадцатеричного.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top