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

时间:2016-02-11 17:23:31

标签: c# xaml win-universal-app

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

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

我想要完成的是触发器!检查如果Points大于:50,然后将ListViewItem的背景颜色更改为红色。

            <ListView.ItemTemplate>
                <DataTemplate x:DataType="data:Tests">
                    <Grid>
                        <TextBlock Text="{x:Bind Name}"  />
                        <TextBlock Text="{x:Bind Points}"  />
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>

4 个答案:

答案 0 :(得分:8)

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

enter image description here

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

        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"];
              }
            }

答案 1 :(得分:4)

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

  1. 使用我发现的ItemContrainerStyleSelectorthe sample
  2. 使用我发现的DataTemplateSelectorthe sample
  3. 使用我发现的Converterthe sample描述了bool的可见性,但您可以按照自己的意愿进行更改。

答案 2 :(得分:0)

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

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

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

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

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

答案 3 :(得分:0)