如何更改ListView行的背景颜色?

时间:2019-11-13 09:46:55

标签: c# visual-studio entity-framework listview

private void Button_Click(object sender, RoutedEventArgs e)
{
    using (var db = new mainEntities())
    {
        people = (from p in db.People select p).ToList();
    }
    foreach (Person p in People)
    {                
        listView.Items.Add(p);
    }            
}
<ListView x:Name="listView" Foreground="Black">            
    <ListView.View>
        <GridView x:Name="gridView">
            <GridViewColumn Header="name" DisplayMemberBinding="{Binding Name}"/>
            <GridViewColumn Header="Spec" DisplayMemberBinding="{Binding Career}"/>
        </GridView>
    </ListView.View>
</ListView>

我使用ADO.Net实体模型从数据库中创建Person对象模型,从数据库中创建Person对象的列表,然后将该列表添加到ListView使用绑定显示到列。我想基于ListView的值更改Career行的颜色。例如,如果Career=='Nurse',则将该行设置为红色。

我似乎遇到的问题是Person对象不是ListViewItem,因此我无法设置Background属性。

1 个答案:

答案 0 :(得分:0)

您可以在ListView中添加一个DataTrigger。添加DataTrigger将检测绑定值并更改ListViewItem背景。

直接在xaml中设置ListViewItem的样式。请参见以下代码示例:

  <ListView x:Name="listView" Foreground="Black" ItemsSource="{Binding}">
        <ListView.View>
            <GridView x:Name="gridView">
                <GridViewColumn Header="name" DisplayMemberBinding="{Binding Name}"/>
                <GridViewColumn Header="Spec" DisplayMemberBinding="{Binding Career}"/>
            </GridView>
        </ListView.View>
        <ListView.Resources>
            <Style TargetType="{x:Type ListViewItem}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Career}"
                  Value="Nurse">
                        <Setter Property="Background"
              Value="Red" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListView.Resources>
    </ListView>

enter image description here