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 的DragIndicatorStyleDropLocationIndicatorStyle属性来

设置拖放标题控件的样式。我测试了以下代码,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>

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

于 2013-05-29T11:42:14.147 回答