如何:为拖动的 GridView 列标题创建样式

更新:2007 年 11 月

下面的示例演示当用户更改列的位置时,所拖动的 GridViewColumnHeader 的外观如何发生变化。

示例

在使用 GridView 作为其视图模式的 ListView 中,当您将某个列标题移到另一个位置时,该列将移到新的位置。当您拖动列标题时,除了原始标题以外,还会出现该标题的浮动副本。GridView 中的列标题由 GridViewColumnHeader 对象来表示。

若要同时对浮动标题和原始标题的外观进行自定义,可以设置 Triggers 以修改 GridViewColumnHeader Style。如果 IsPressed 属性值为 true,并且 Role 属性值为 Floating,则会应用这些 Triggers

当鼠标悬停在 GridViewColumnHeader 上时,如果用户按住鼠标按钮,则 IsPressed 属性值会更改为 true。同样,当用户开始执行拖动操作时,Role 属性会更改为 Floating

下面的示例演示如何设置 Triggers,使用户将列拖到新位置时,原始标题和浮动标题的 ForegroundBackground 颜色发生变化。

<ControlTemplate TargetType="{x:Type GridViewColumnHeader}">


...


<ControlTemplate.Triggers>


...


<Trigger Property="IsPressed"
         Value="true">
  <Setter TargetName="HighlightBorder"
          Property="Visibility"
          Value="Hidden"/>
  <Setter TargetName="PART_HeaderGripper"
          Property="Visibility"
          Value="Hidden"/>
  <Setter Property="Background"
          Value="SkyBlue"/>
  <Setter Property="Foreground"
          Value="Yellow"/>
</Trigger>


...


<Trigger Property="Role"
         Value="Floating">
  <Setter TargetName="PART_HeaderGripper"
          Property="Visibility"
          Value="Collapsed"/>
  <Setter Property="Background"
          Value="Yellow"/>
  <Setter Property="Foreground"
          Value="SkyBlue"/>
</Trigger>


...


</ControlTemplate.Triggers>


...


</ControlTemplate>

有关完整示例,请参见 具有自定义浮动标题的 ListView 的示例

请参见

概念

ListView 概述

GridView 概述

参考

GridViewColumnHeader

GridViewColumnHeaderRole

ListView

GridView

其他资源

ListView 帮助主题

ListView 示例