Предположим, у меня есть следующий список:
<ListView Name="list" />
и следующий код внутри моей функции:
list.Items.Add("red");
list.Items.Add("green");
Как изменить фон первого элемента на красный, а второй на зеленый?
Вы можете использовать ItemContainerStyle
для определения стиля для элементов.
В стиле вы можете привязать свойство Background
к самому элементу, представляющему цвет.
Теперь неявный конвертер цветов преобразуется в соответствующий цвет и устанавливает свойство фона.
пример
<ListView Name="list" >
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Background"
Value="{Binding}" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
результат
Альтернативный подход
вот как вы можете использовать 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>
результат
в приведенном выше примере вы можете видеть, что цвет фона применяется только к нужным элементам, например. красный и зеленый