方法 : ドラッグされた GridView 列ヘッダーのスタイルを作成する
この例では、ユーザーが列の位置を変更したときに、ドラッグされた GridViewColumnHeader の外観を変更する方法を示します。
使用例
表示モードに GridView を使用する ListView で列ヘッダーを別の場所にドラッグすると、その列が新しい位置に移動します。 列ヘッダーをドラッグしている間、元のヘッダーとは別に、そのコピーであるフローティング ヘッダーが表示されます。 GridView の列ヘッダーは、GridViewColumnHeader オブジェクトで表されます。
フローティング ヘッダーと元のヘッダーの外観をカスタマイズするには、Triggers を設定して GridViewColumnHeader Style を変更します。 これらの Triggers は、IsPressed プロパティ値が true で、Role プロパティ値が Floating の場合に適用されます。
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>