如何:为实现 GridView 的 ListView 中的行设置样式
下面的示例演示如何为实现 GridView View 模式的 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>