wpf - 使用 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。
知道如何结合这两个要求吗?它吞噬了我!
富有的
解决方案
好的,我自己试过了,这是我找到的解决方案:
您必须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
)。在评论中,我链接了针对不同问题给出的解决方案,也可以在这里使用。
推荐阅读
- angular - 如何在 Ionic CLI 5 中禁用自动生成路由模块?
- excel - 用于网络查询的动态 URL
- linux - Ghostscript 在 Linux 上绝对需要 root 访问权限吗?
- elasticsearch - 是否可以使用 org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate 删除索引?
- ios - 在 AppStore Connect 中禁用可用国家/地区后对用户有什么副作用
- c# - 如何在 Controller 上添加 Web API 身份验证过滤器?
- javascript - 比较字符串数组和对象数组
- css - Safari:弹性盒和最小高度
- vue.js - vue v-model 似乎没有在模态下工作
- javascript - 将光标放在带有默认值的提示中的文本末尾