ListView Изменить фон одного элемента

1

Предположим, у меня есть следующий список:

<ListView Name="list" />

и следующий код внутри моей функции:

list.Items.Add("red");
list.Items.Add("green");

Как изменить фон первого элемента на красный, а второй на зеленый?

  • 0
    Как насчет создания класса "ColorViewModel" со свойством "BackgroundColor"? list.Items.Add (new ColorViewModel ("red", Colors.Red)); А затем связать свойство «Background» для listitems с «BackgroundColor» вашей модели представления?
Теги:
xaml
wpf
listview

1 ответ

1
Лучший ответ

Вы можете использовать ItemContainerStyle для определения стиля для элементов.

В стиле вы можете привязать свойство Background к самому элементу, представляющему цвет.

Теперь неявный конвертер цветов преобразуется в соответствующий цвет и устанавливает свойство фона.

пример

<ListView Name="list" >
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Background"
                    Value="{Binding}" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

результат

Изображение 174551

Альтернативный подход

вот как вы можете использовать Triggers для установки значений условно

Я использовал DataTrigger чтобы узнать, соответствует ли элемент моему состоянию, и затем я могу установить желаемый цвет через сеттер

<ListView Name="list">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <DataTrigger Binding="{Binding}"
                             Value="red">
                    <Setter Property="Background"
                            Value="red" />
                </DataTrigger>
                <DataTrigger Binding="{Binding}"
                             Value="mygreen">
                    <Setter Property="Background"
                            Value="green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

результат

Изображение 174551

в приведенном выше примере вы можете видеть, что цвет фона применяется только к нужным элементам, например. красный и зеленый

  • 0
    Спасибо, но это не совсем то, что я искал. Например, когда я добавляю элемент с именем mygreen, я больше не могу изменить фон.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню