2014-08-29 5 views
1

Предположим, у меня есть следующий ListView:ListView Изменение фона одного элемента

<ListView Name="list" /> 

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

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

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

+0

Как насчет создания класса «ColorViewModel» с свойством «BackgroundColor»? list.Items.Add (новый ColorViewModel («красный», Colors.Red)); А затем связать свойство «Источники» с листингами в «BackgroundColor» вашего viewmodel? – SuperOli

ответ

1

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

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

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

пример

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

результат

result

Альтернативные Approch

вот как вы можете использовать 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> 

результат

result

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

+0

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

Смежные вопросы