2014-08-29 85 views
1

假设我有以下列表视图:的ListView更改背景

<ListView Name="list" /> 

和我的函数中下面的代码:

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

如何更改的第一个项目的背景红色和第二个绿色?

+0

如何用“BackgroundColor”属性创建“ColorViewModel”类? list.Items.Add(new ColorViewModel(“red”,Colors.Red));然后将listitems的“Background”属性绑定到你的viewmodel的“BackgroundColor”? – SuperOli 2014-08-29 12:58:34

回答

1

您可以利用ItemContainerStyle来定义项目的样式。

在样式中,您可以将Background属性绑定到作为颜色表示的项目本身。

现在,隐式颜色转换器将转换为适当的颜色并设置为背景属性。

例如

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

结果

result

备用计算策略

这里是你如何使用Triggers设定值有条件

我用DataTrigger看,如果该项目符合我的情况,然后我可以通过一个setter设置所需的颜色

<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 2014-08-29 12:50:51