将 Header 样式添加到 DataGrid 会覆盖(隐藏)使用 header 上的绑定的数据

Adding Header Style to DataGrid overrides (hides) data using Binding on header

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

绑定工作正常,使用:

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

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

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

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

富有

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

您必须在样式定义中定义 TextBlock

<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)。 在评论中,我链接了针对不同问题给出的解决方案,也可以在这里使用。