如何:为拖动的 GridView 列标题创建样式
下面的示例演示当用户更改列的位置时,所拖动的 GridViewColumnHeader 的外观如何发生变化。
示例
在使用 GridView 作为其视图模式的 ListView 中,当您将某个列标题移到另一个位置时,该列将移到新的位置。 当您拖动列标题时,除了原始标题以外,还会出现该标题的浮动副本。 GridView 中的列标题由 GridViewColumnHeader 对象来表示。
若要同时对浮动标题和原始标题的外观进行自定义,可以设置 Triggers 以修改 GridViewColumnHeader Style。 如果 IsPressed 属性值为 true,并且 Role 属性值为 Floating,则会应用这些 Triggers。
当鼠标悬停在 GridViewColumnHeader 上时,如果用户按住鼠标按钮,则 IsPressed 属性值会更改为 true。 同样,当用户开始执行拖动操作时,Role 属性会更改为 Floating。
下面的示例演示如何设置 Triggers,使用户将列拖到新位置时,原始标题和浮动标题的 Foreground 和 Background 颜色发生变化。
<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>