首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridColumnHeader风格延续

DataGridColumnHeader风格延续
EN

Stack Overflow用户
提问于 2014-07-22 11:47:31
回答 1查看 392关注 0票数 0

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

代码语言:javascript
复制
<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>

上面的代码显示了我的Style用于DataGridColumnHeaderDataGridColumnHeadersPresenter。触发器按我想要的方式工作,但有些小事情我不喜欢。下面就是我现在所拥有的东西。

图像删除.

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

图像删除.

第二个问题是在标题的右边。如果在单元格上Hover,则触发器将单元格涂成灰色。您可以看到灰色覆盖了DataGridColumnHeadersPresenter边框,因为这些单元格是矩形的,而DataGridColumnHeadersPresenter有圆角。

图像删除.

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

  • 一个大边框围绕整个头部与圆角。
  • 每个标头单元格之间的1 px线。
  • 停留在外部边界内的悬停效果。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 11:11:29

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

代码语言:javascript
复制
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);
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24886569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档