Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当绑定到的项目发生更改时,强制更改ListViewItem背景颜色_C#_Wpf_Listview - Fatal编程技术网

C# 当绑定到的项目发生更改时,强制更改ListViewItem背景颜色

C# 当绑定到的项目发生更改时,强制更改ListViewItem背景颜色,c#,wpf,listview,C#,Wpf,Listview,添加ListViewItem时,My ItemContainerStyle可以完美工作: <Style x:Key="ItemContStyle" TargetType="{x:Type ListViewItem}"> <Style.Resources> <SolidColorBrush x:Key="lossBrush" Color="Re

添加ListViewItem时,My 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>

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


如何触发触发器?

也许绑定上的路径应该指向DataContext持有的属性,而不是DataContext本身。该属性将返回-1、-2、-3或其他值。当该值更改时,将对触发器进行求值。这里的问题是,一旦加载,DataContext很可能不会更改。

绑定上的路径应该是DataContext持有的属性,而不是DataContext本身。该属性将返回-1、-2、-3或其他值。当该值更改时,将对触发器进行求值。这里的问题是,一旦加载,DataContext很可能不会改变。

我认为这也是问题所在,而且转换器似乎正在做一些工作来产生这个值。另外,为了澄清xaml,所有绑定都可以简化为:{Binding Converter={StaticResource OrderItemConverter},因为Self.DataContext是绑定的默认源。如果在转换器中完成的工作被移动到ViewModel,它可能只是{Binding}。我已经使用这种方法使它工作了-谢谢。但仍然不理想。我认为这也是问题所在,而且看起来转换器正在做一些工作来产生这个值。另外,为了澄清xaml,所有绑定都可以简化为:{Binding Converter={StaticResource OrderItemConverter},因为Self.DataContext是绑定的默认源。如果在转换器中完成的工作被移动到ViewModel,它可能只是{Binding}。我已经使用这种方法使它工作了-谢谢。但仍然不理想。