如何:为实现 GridView 的 ListView 中的行设置样式

更新:2007 年 11 月

下面的示例演示如何为实现 GridViewView 模式的 ListView 控件中的行设置样式。

示例

可以通过针对 ListView 控件设置 ItemContainerStyle 来为 ListView 控件中的行设置样式。可以为该控件中表示为 ListViewItem 对象的项设置样式。ItemContainerStyle 引用用于显示行内容的 ControlTemplate 对象。

下面的几个示例所摘自的完整示例显示了存储在 XML 数据库中的歌曲信息集。数据库中的每首歌都有一个分级字段,该字段的值指定如何显示一行歌曲信息。

下面的示例演示如何为那些表示该歌曲集内歌曲的 ListViewItem 对象定义 ItemContainerStyleItemContainerStyle 所引用的 ControlTemplate 对象指定如何显示一行歌曲信息。

   <ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}"  >
      <Setter Property="Template"
            Value="{StaticResource Default}"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding XPath=@Rating}" Value="5">
                <Setter Property="Template" 
                Value="{StaticResource StronglyRecommended}"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding XPath=@Rating}" Value="4">
          <Setter Property="Template" 
                Value="{StaticResource Recommended}"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </ListView.ItemContainerStyle>

下面的示例显示一个用来向行中添加文本字符串 "Strongly Recommended" 的 ControlTemplate。此模板就是 ItemContainerStyle 中所引用的模板,它在歌曲的分级值为 5(五)时显示。ControlTemplate 包括一个 GridViewRowPresenter 对象,该对象按照 GridView 视图模式的定义,以列的布局形式显示行的内容。

<ControlTemplate x:Key="StronglyRecommended" 
                 TargetType='{x:Type ListViewItem}'>
  <StackPanel Background="Beige">
    <GridViewRowPresenter Content="{TemplateBinding Content}"
       Columns="{TemplateBinding GridView.ColumnCollection}"/>
    <TextBlock Background="LightBlue" Text="Strongly Recommended" />
  </StackPanel>
</ControlTemplate>

下面的示例定义 GridView

<ListView.View>
  <GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
    <GridViewColumn Header="Name" 
                    DisplayMemberBinding="{Binding XPath=@Name}" 
                    Width="100"/>
    <GridViewColumn Header="Time" 
                    DisplayMemberBinding="{Binding XPath=@Time}" 
                    Width="80"/>
    <GridViewColumn Header="Artist"  
                    DisplayMemberBinding="{Binding XPath=@Artist}" 
                    Width="80" />
    <GridViewColumn Header="Disk" 
                    DisplayMemberBinding="{Binding XPath=@Disk}"  
                    Width="100"/>
  </GridView>
</ListView.View>

有关完整示例,请参见 具有带样式 ListViewItem 的 ListView 的示例

请参见

概念

ListView 概述

样式设置和模板化

参考

ListView

GridView

其他资源

ListView 帮助主题

ListView 示例