1

ColumnHeader をドラッグして Datagrid の列を並べ替えると、列が配置される場所を示すインジケーターが表示されます。このインジケーターのスタイルをどのように設定できますか?

4

1 に答える 1

3

これは、Aero テーマのインジケーター用のものです。私はあなたがこれをスタイリングしようとしていると信じています。

<Style x:Key="{x:Static DataGridColumnHeader.ColumnHeaderDropSeparatorStyleKey}" TargetType="{x:Type Separator}">
    <Setter Property="Background" Value="#FF000080" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Separator}">
                <Border Background="{TemplateBinding Background}"
                          BorderBrush="{TemplateBinding BorderBrush}"
                          BorderThickness="{TemplateBinding BorderThickness}"
                          SnapsToDevicePixels="True">
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

ここにmsdnへのリンクがあります

編集: DataGrid のDragIndicatorStyleおよびDropLocationIndicatorStyleプロパティを

使用して、ヘッダー コントロールのドラッグ アンド ドロップをスタイリングする簡単な方法があると思います。次のコードをテストしたところ、データグリッドがスタイルを取得しました。

<Window.Resources>
    <Style x:Key="DragHeaderStyle" TargetType="{x:Type Control}">
        <Setter Property="BorderBrush" Value="Red"/>
    </Style>

    <Style x:Key="DropHeaderStyle" TargetType="{x:Type Separator}">
        <Setter Property="BorderBrush" Value="Red"/>
        <Setter Property="BorderThickness" Value="5"/>
    </Style>

</Window.Resources>

<DataGrid DragIndicatorStyle="{StaticResource DragHeaderStyle}" 
          DropLocationIndicatorStyle="{StaticResource DropHeaderStyle}"
          ...>
</DataGrid>

必要に応じてコントロール テンプレートをオーバーライドできるかどうかを確認してください。

于 2013-05-29T11:42:14.147 に答える