Различный цвет для разных элементов в ListView

Как я могу определить разные цвета в каждой строке 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; }
}
</fruit></fruit></fruit>

И это XALM:

<grid>
 <listview name="listView1" itemssource="{Binding Fruits}">
 <listview.view>
 <gridview>
 <gridviewcolumn header="Fruit" displaymemberbinding="{Binding Name}">
 <gridviewcolumn header="Count" displaymemberbinding="{Binding Count}">
 </gridviewcolumn></gridviewcolumn></gridview>
 </listview.view>
 </listview>
</grid>

Как я могу сделать все строки с яблоками красными, апельсины желтые e.t.c. без редактирования Фруктовый класс?

2 ответа

Объявите следующий стиль в ресурсах View.xaml, он будет применяться к каждому элементу ListView. Учитывая, что в каждый ListViewItem.DataContext задан объект типа Fruit, вы установили DataTrigger в свойство Name:


Существует несколько способов сделать это.

Первый способ - использовать DataTemplates, который позволяет вам выбирать цвет по состоянию вашего объекта. Вы можете прочитать о них здесь

Кроме того, вы всегда можете указать количество чередования строк. Вы можете прочитать об этом здесь

licensed under cc by-sa 3.0 with attribution.