Разный цвет для разных предметов в ListView - PullRequest
1 голос
/ 10 ноября 2011

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

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

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

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

<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>
1 голос
/ 10 ноября 2011

Есть несколько способов сделать это.

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

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

...