首页 > 解决方案 > 使用 Binding on header 将 Header Style 添加到 DataGrid 覆盖(隐藏)数据

问题描述

我需要设置 WPF dataGrid 标题的样式并绑定标题数据。

绑定工作正常,使用:

<TextBlock Text="{Binding DataContext.HeadData, 
        RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />

如果我现在向 DataGrid 添加标题样式,则样式中的 TextBlock 将覆盖绑定数据。

我正在使用所有最新的 Dot-Net 和 VS 2019。

知道如何结合这两个要求吗?它吞噬了我!

富有的

标签: wpfbindingdatagridstyles

解决方案


好的,我自己试过了,这是我找到的解决方案:

您必须TextBlock在 Style 定义中定义

<Style x:Key="MyHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                <TextBlock Text="{Binding DataContext.HeadData, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

在某种程度上,设置标题样式和指定标题内容会产生冲突。所以你必须移动样式中的所有内容。

显然,您就像这样使用样式。

<DataGridTextColumn HeaderStyle="{StaticResource MyHeaderStyle}" />

希望我对您有所帮助。

编辑

此解决方案不起作用(否则,它仅适用于一列DataGrid)。在评论中,我链接了针对不同问题给出的解决方案,也可以在这里使用。


推荐阅读