Gewusst wie: Erstellen eines Stils für einen gezogenen GridView-Spaltenheader
In diesem Beispiel wird erläutert, wie Sie die Darstellung eines gezogenen GridViewColumnHeader ändern, wenn der Benutzer die Position einer Spalte ändert.
Beispiel
Wenn Sie einen Spaltenheader in einer ListView im GridView-Ansichtmodus an eine neue Position ziehen, wird die Spalte an die neue Position verschoben. Beim Ziehen des Spaltenheaders wird zusätzlich zum ursprünglichen Header eine unverankerte Kopie des Headers angezeigt. Ein Spaltenheader in einem GridView wird durch ein GridViewColumnHeader-Objekt dargestellt.
Um die Darstellung des unverankerten und des ursprünglichen Headers anzupassen, können Sie Triggers zum Ändern des GridViewColumnHeader Style festlegen. Diese Triggers werden angewendet, wenn der IsPressed-Eigenschaftswert true und der Role-Eigenschaftswert Floating ist.
Wenn der Benutzer die Maustaste gedrückt hält, während sich der Mauszeiger über dem GridViewColumnHeader befindet, wird der IsPressed-Eigenschaftswert auf true geändert. Wenn der Benutzer den Ziehvorgang startet, wird die Role-Eigenschaft entsprechend auf Floating geändert.
Im folgenden Beispiel wird erläutert, wie Sie Triggers so festlegen, dass die Farben für Foreground und Background des ursprünglichen und unverankerten Headers geändert werden, wenn der Benutzer eine Spalte an eine neue Position zieht.
<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>