【问题标题】:Different color for different items in ListViewListView 中不同项目的不同颜色
【发布时间】:2011-12-26 01:12:28
【问题描述】:

如何在 ListView 的每一行中自动定义不同的颜色?例如,如果我有这样的课程:

public partial class MainWindow : Window
{
    private ObservableCollection<Fruit> _fruits = new ObservableCollection<Fruit>();
    public ObservableCollection<Fruit> Fruits { get { return _fruits; } }
    public MainWindow()
    {
        Fruits.Add(new Fruit { Name = "apple", Count = 3 });
        Fruits.Add(new Fruit { Name = "orange", Count = 10 });
        Fruits.Add(new Fruit { Name = "apple", Count = 3 });
        Fruits.Add(new Fruit { Name = "banana", Count = 8 });

        InitializeComponent();
    }
}

public class Fruit
{
    public string Name { get; set; }
    public int Count { get; set; }
}

这是一个 XALM:

<Grid>
    <ListView Name="listView1" ItemsSource="{Binding Fruits}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Fruit" DisplayMemberBinding="{Binding Name}"/>
                <GridViewColumn Header="Count" DisplayMemberBinding="{Binding Count}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>

如何使所有带有苹果的行都变成红色,橙子变成黄色等。没有编辑水果类?

【问题讨论】:

  • 您的问题能否更具体一些。实际上,WPF 中有两种类型的颜色突出显示。第一种类型允许您为每个项目使用不同的颜色。第二个允许您设置行的交错标记。所以我的问题是哪一个适合你?

标签: c# wpf xaml listview wpf-controls


【解决方案1】:

有几种方法可以做到这一点。

第一种方法是使用 DataTemplates,它允许您按对象的状态选择颜色。你可以阅读他们here

此外,您始终可以指定行的交替计数。你可以阅读它here

【讨论】:

    【解决方案2】:

    在 View.xaml 资源中声明以下样式,它将应用于每个 ListView 项。考虑到每个 ListViewItem.DataContext 都设置了 Fruit 类型的对象,您可以在 Name 属性上设置 DataTrigger:

    <Style TargetType="ListViewItem"> 
        <Style.Triggers>
             <DataTrigger Binding="{Binding Name}" Value="apple">
                   <Setter Property="Background" Value="Green" />
             </DataTrigger>
             <DataTrigger Binding="{Binding Name}" Value="orange">
                   <Setter Property="Background" Value="orange" />
             </DataTrigger>
        </Style.Triggers>
    </Style>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-23
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多