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