更新:2007 年 11 月
下面的示例演示如何为实现 GridViewView 模式的 ListView 控件中的行设置样式。
示例
可以通过针对 ListView 控件设置 ItemContainerStyle 来为 ListView 控件中的行设置样式。可以为该控件中表示为 ListViewItem 对象的项设置样式。ItemContainerStyle 引用用于显示行内容的 ControlTemplate 对象。
下面的几个示例所摘自的完整示例显示了存储在 XML 数据库中的歌曲信息集。数据库中的每首歌都有一个分级字段,该字段的值指定如何显示一行歌曲信息。
下面的示例演示如何为那些表示该歌曲集内歌曲的 ListViewItem 对象定义 ItemContainerStyle。ItemContainerStyle 所引用的 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 的示例。