仅在一列中更改ListView项的前景色

我有一个对象列表和一个ListView,我在这里显示这个列表。 这样的对象有一些属性,它们绑定到ListView的列。

           

这部分工作正常。

现在我想在单行中更改newFileName列的Foreground颜色,但newFileName是它等于同一行中的’fileName’。

我可以在XAML中执行此操作,还是必须转到文件后面的代码?

如果我能在XAML中处理它,我希望它是最好的,因为我认为这是一个纯粹的设计问题,但我不知道,从哪里开始或放在哪里,(我可以在XAML中进行字符串比较吗?)

所以我试着在代码隐藏文件中处理这个问题。 我认为必须有一个事件在ListView发生变化时引发,我尝试了SourceUpdated事件,但是在我更改列表内容时没有输入。
接下来的问题是,如何访问那些ListView项目……

任何人都可以告诉我如何解决这个问题?

您可以使用MultiBinding和MultiConverter执行此操作。 您将需要编写一个MultiConverter,它接受fileName和newFileName,如果它们相等则返回true

                      

EqualityConverter的代码如下:

 public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values[0].ToString().Equals(values[1].ToString())) return true; return false; } 

如果你想改变任何wpf元素的风格,你应该使用Style。 如果你想在某些情况下发生它,你应该使用Style.Triggers。 如果您的条件属于绑定信息,则应使用DataTrigger。 如果XAML数据触发器无法处理您的情况,请添加转换器。

所以我建议你在GridViewColum.Style和一个带有2个参数filename和newfilename的多转换器中取一个datatrigger。 如果相同则返回true,否则返回false。

类似的东西:

          

变流器

 public class FileNameCheckConverter: IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var filename = (string)values[0]; var newfilename = (string)values[1]; return filename==newfilename; } ... } 

ps:别忘了在你的风格中设置“正常”前景! 否则触发器的东西将无法工作。

pps:代码是手写的