2014-08-29 209 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