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}">

解决方案 »

  1.   

    如何:为实现 GridView 的 ListView 中的行设置样式下面的示例演示如何为实现 GridView View 模式的 ListView 控件中的行设置样式。  示例 
    可以通过针对 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>
      

  2.   

    我不是很了解WPF,不知道是不是下面的原因
     <Window.Resources>
            <Style x:Key="AAA" TargetType="{x:Type GridViewColumnHeader}">这里说Style 的TargetType 是GridViewColumnHeader但是
     <GridView ColumnHeaderContainerStyle="{StaticResource AAA}">
    却应用在了GridView 上。
      

  3.   

    报的什么错?你是不是把<Window.Resources>的定义放在GridView的定义之后了?
    <GridView ColumnHeaderContainerStyle="{StaticResource AAA}">指定的是该GridView中的ColumnHeaderContainer的样式。
      

  4.   

    太好了, 就是这个原因, Resources 定义放到 GridView 后面了...长记性了.