更改 WPF ItemTemplate 的背景颜色

bet*_*sou 1 c# wpf xaml listbox

我必须根据布尔值更改 ListBox 的 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>
Run Code Online (Sandbox Code Playgroud)

如果用户删除了一个项目,我想以灰色背景显示他。
Precision :ListBox 绑定到一个 Dictionnary,其中包含一个布尔值“IsDeleted”。抱歉英语不好。
谢谢

mm8*_*mm8 5

您可以使用ItemContainerStyle带 a DataTrigger

<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>
Run Code Online (Sandbox Code Playgroud)

如果您打算动态设置属性并希望相应地更新背景,请确保具有该IsDeleted属性的类正确实现INotifyPropertyChanged接口。