2017-03-01 91 views
1

我必须更改ListBox的ItemTemplate的背景颜色,具体取决于布尔值的值。 这里是我的列表框:更改WPF ItemTemplate的背景颜色

<ListBox Name="itemListBox" 
     ScrollViewer.VerticalScrollBarVisibility="Visible" 
     SelectionChanged="itemListBox_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <StackPanel Width="200"> 
        <TextBlock FontSize="10" 
           FontWeight="Bold" 
           VerticalAlignment="Center" 
           Text="{Binding Path=Value.DocID}" /> 
        <TextBlock FontSize="10" 
           VerticalAlignment="Center" 
           TextWrapping="Wrap" 
           Text="{Binding Path=Value.Serial}"/> 
       </StackPanel> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

如果用户删除了某个项目,我想表明他在灰色backrgound。
精度:ListBox绑定到一个Dictionnary,它包含一个布尔值“IsDeleted”。 对不起英语。
谢谢

+0

“如果用户删除一个项目”,那么代码中的含义是什么?该项目是否有一个标志表明它已被删除? –

+0

列表框绑定到一个字典,其中包含一个布尔值“IsDeleted” – betsou

回答

3

你可以使用一个ItemContainerStyleDataTrigger:如果要动态地设置该属性

<ListBox Name="itemListBox" ScrollViewer.VerticalScrollBarVisibility="Visible" SelectionChanged="itemListBox_SelectionChanged"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Value.IsDeleted}" Value="True"> 
        <Setter Property="Background" Value="Gray" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <StackPanel Width="200"> 
        <TextBlock FontSize="10" FontWeight="Bold" VerticalAlignment="Center" Text="{Binding Path=Value.DocID}" /> 
        <TextBlock FontSize="10" VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Path=Value.Serial}"/> 
       </StackPanel> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

确保与IsDeleted属性的类正确地实现了INotifyPropertyChanged接口和想要的背景以相应地更新。

+0

非常感谢! 是的,INotifyPropertyChanged已实施。 – betsou