ListView 声明代码:
<ListView x:Name="listView">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource AAA}">
<GridViewColumn Header="ABC" Width="100"/>
<GridViewColumn Header="DEF" Width="200"/>
</GridView>
</ListView.View>
</ListView>Style 定义代码:
<Window.Resources>
<Style x:Key="AAA" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="BorderBrush" Value="{x:Null}"/>
<Setter Property="Foreground" Value="White"/>
</Style>
</Window.Resources>
编译通过, 就是报异常, 程序不能继续.
异常位置是:
<GridView ColumnHeaderContainerStyle="{StaticResource AAA}">
可以通过针对 ListView 控件设置 ItemContainerStyle 来为 ListView 控件中的行设置样式。 可以为该控件中表示为 ListViewItem 对象的项设置样式。 ItemContainerStyle 引用用于显示行内容的 ControlTemplate 对象。 下面的几个示例所摘自的完整示例显示了存储在 XML 数据库中的歌曲信息集。 数据库中的每首歌都有一个分级字段,该字段的值指定如何显示一行歌曲信息。 下面的示例演示如何为那些表示该歌曲集内歌曲的 ListViewItem 对象定义 ItemContainerStyle。 ItemContainerStyle 所引用的 ControlTemplate 对象指定如何显示一行歌曲信息。 XAML 复制代码
<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 视图模式的定义,以列的布局形式显示行的内容。 XAML 复制代码
<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。XAML 复制代码
<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>
<Window.Resources>
<Style x:Key="AAA" TargetType="{x:Type GridViewColumnHeader}">这里说Style 的TargetType 是GridViewColumnHeader但是
<GridView ColumnHeaderContainerStyle="{StaticResource AAA}">
却应用在了GridView 上。
<GridView ColumnHeaderContainerStyle="{StaticResource AAA}">指定的是该GridView中的ColumnHeaderContainer的样式。