DataGridColumnHeader样式继续



这个问题是这个问题的续集:DataGridColumnHeader Style

<Style TargetType="DataGridColumnHeader">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                <Border BorderBrush="#DBDBDB"
                        BorderThickness="1 0 0 0"
                        Background="#00ECECEC"
                        Padding="3">
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                      SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    <Border.Triggers>
                        ...
                    </Border.Triggers>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

上面的代码显示了DataGridColumnHeaderDataGridColumnHeadersPresenterStyle。触发器按我想要的方式工作,但有一些小事情我不喜欢。这就是我现在所拥有的

图片删除。

这里的问题是第一个单元格的左边有一个边框。这样做的原因很清楚,因为我的代码中有这个:BorderThickness="1 0 0 0"

图片删除。

第二个问题在标题的右边。如果我在一个单元格上设置Hover,触发器将该单元格颜色为灰色。你可以看到灰色覆盖在DataGridColumnHeadersPresenter的边框上,因为这些单元格是矩形的,而DataGridColumnHeadersPresenter是圆角的。

图片删除。

我就要得到我想要的了,那就是:

  • 在整个头部周围使用圆角的大边框。
  • 每个页眉单元格之间的1px行
  • 停留在外部边框内的悬停效果。

我的问题的解决方案是在我的代码后面分配样式,而不是xaml本身。下面是代码:

if (gridColumns.Count > 0)
    {
        for (int i = 0; i < gridColumns.Count; i++)
      {
            DataGridTextColumn column = new DataGridTextColumn();
            column.Header = gridColumns[i].ColumnName;
            column.Binding = new Binding(gridColumns[i].ColumnBinding);
            if (i == 0)
                column.HeaderStyle = (Style)this.FindResource("ColumnHeaderStyleLeft");
            else if (i == gridColumns.Count - 1)
                column.HeaderStyle = (Style)this.FindResource("ColumnHeaderStyleRight");
            else
                column.HeaderStyle = (Style)this.FindResource("ColumnHeaderStyleCenter");
            dataGrid.Columns.Add(column);
        }
    }

相关内容

  • 没有找到相关文章

最新更新