uwp:如何根据listview项的值更改listview项的背景颜色?

编辑:UWP App与WPF应用程序不是100%相同。

我有一个带有ListView的uwp应用程序。 在ListView中,我使用带有测试类的DataTemplate。 它显示测试和点的名称。

我想要完成的是一个触发器! 检查点是否大于ie:50然后将ListViewItem 的背景颜色更改为红色。

        

您可以通过多种方式执行此操作:

  1. 使用ItemContrainerStyleSelector :我找到的样本
  2. 使用DataTemplateSelector :我找到的样本
  3. 使用Converter :我发现的样本描述了bool的可见性,但您可以按照自己的意愿进行更改。

我发现很难让我的listview项目显示替代颜色。 最后,我设法通过为ListView事件处理程序ContainerContentChanging指定一个方法来完成此操作。

在此处输入图像描述

在列表视图中填充每个项目时,将调用分配给此事件的方法。 这提供了更改列表视图项的前景,背景,文本等的function

  private void listViewContentChange(ListViewBase sender, ContainerContentChangingEventArgs args) { //this method is called for each item while it gets loaded in the listview. Here we are changing background color and text color if (args.ItemIndex == 0) { //colour for header args.ItemContainer.Background = (SolidColorBrush) Application.Current.Resources["grey"]; } else { if (args.ItemIndex % 2 == 0) { //lighter colour args.ItemContainer.Background = (SolidColorBrush) Application.Current.Resources["lightblue"]; } else { //Dark colour args.ItemContainer.Background = (SolidColorBrush) Application.Current.Resources["blue"]; } } 

您可以使用类似的内容: https : //stackoverflow.com/a/27621234/3869250

在那个例子中,海报只是检查它是偶数还是奇数,以创建交替的颜色。

 if (index % 2 == 0) { ... } 

在您的情况下,您可以执行以下操作:

 if(item.Points > 50) { return this.RedBackgroundStyle; } 

看看关于替代颜色的完整代码片段答案。