Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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# ListView中不同项目的不同颜色_C#_Wpf_Xaml_Listview_Wpf Controls - Fatal编程技术网

C# ListView中不同项目的不同颜色

C# ListView中不同项目的不同颜色,c#,wpf,xaml,listview,wpf-controls,C#,Wpf,Xaml,Listview,Wpf Controls,如何在ListView的每一行中自动定义不同的颜色?例如,如果我有这样的课程: public partial class MainWindow : Window { private ObservableCollection<Fruit> _fruits = new ObservableCollection<Fruit>(); public ObservableCollection<Fruit> Fruits { get { return _fr

如何在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; }
}
公共部分类主窗口:窗口
{
私有ObservableCollection_=新ObservableCollection();
公众可观察到的收集结果{获取{返回{u水果;}}
公共主窗口()
{
添加(新水果{Name=“apple”,Count=3});
添加(新水果{Name=“orange”,计数=10});
添加(新水果{Name=“apple”,Count=3});
添加(新水果{Name=“banana”,Count=8});
初始化组件();
}
}
公共级水果
{
公共字符串名称{get;set;}
公共整数计数{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>


如何在不编辑水果类的情况下使所有包含苹果的行变为红色、橙色和黄色?

在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>

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

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


此外,您始终可以指定行的交替计数。你可以读一下

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