如何在排序时设置WPF-Datagrid的Drop-Target-Indicator的样式?

时间:2013-05-29 11:21:33

标签: wpf xaml datagrid

如果通过拖动列标题重新排序数据网格的列,则会得到一个指示器,显示列的放置位置。你怎么设计这个指标?

1 个答案:

答案 0 :(得分: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 属性来设置拖放标题控件的样式有一种更简单的方法。我测试了以下代码,datagrid选择了样式。

<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>

查看您是否可以覆盖控制模板以满足您的需要。