强制ListViewItem背景颜色在绑定到更改的绑定项时更改

时间:2010-03-30 15:46:56

标签: c# wpf listview

添加ListViewItem时,我的ItemContainerStyle工作正常:

   <Style x:Key="ItemContStyle"
           TargetType="{x:Type ListViewItem}">
        <Style.Resources>
            <SolidColorBrush x:Key="lossBrush"
                             Color="Red" />
            <SolidColorBrush x:Key="newPartNo"
                             Color="LightGreen" />
            <SolidColorBrush x:Key="noSupplier"
                             Color="Yellow" />
            <Orders:OrderItemStatusConverter x:Key="OrderItemConverter" />
        </Style.Resources>
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=DataContext, Converter={StaticResource OrderItemConverter}}"
                         Value="-1">
                <Setter Property="Background"
                        Value="{StaticResource lossBrush}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=DataContext, Converter={StaticResource OrderItemConverter}}"
                         Value="-2">
                <Setter Property="Background"
                        Value="{StaticResource newPartNo}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=DataContext, Converter={StaticResource OrderItemConverter}}"
                         Value="-3">
                <Setter Property="Background"
                        Value="{StaticResource noSupplier}" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

但是当源项目发生更改时,触发器不会被触发,背景颜色也不是我所期望的。

如何触发触发?

1 个答案:

答案 0 :(得分:1)

绑定上的Path可能应该是DataContext所拥有的属性,而不是DataContext本身。该属性将返回-1,-2,-3或其他任何东西。当该值更改时,将评估触发器。这里的问题是一旦加载,DataContext很可能不会改变。