Telerik WPF GridView列头绑定ToolTip后文本消失的原因与解决方法
问题原因及解决办法
这个问题我之前也碰到过,核心原因在于你的Style没有继承Telerik GridViewHeaderCell的默认样式,导致控件自带的模板和布局逻辑被完全覆盖了。
当你定义一个不带BasedOn属性的自定义Style时,WPF会用这个新样式替换掉控件的默认样式——Telerik的GridViewHeaderCell自带了包含排序图标、筛选按钮以及Content显示逻辑的模板,你的自定义样式没有继承这些设置,所以列头的文本区域没被正确渲染出来,看起来就像是文本被清空了;但实际上Content属性的值还是存在的,所以ToolTip才能正常显示。
下面是两种有效的解决办法:
办法一:继承默认样式(推荐)
在你的Style中添加BasedOn属性,继承Telerik的默认GridViewHeaderCellStyle,这样既能保留列头原有的布局和功能,又能添加ToolTip的设置:
<Style TargetType="telerik:GridViewHeaderCell" BasedOn="{StaticResource GridViewHeaderCellStyle}"> <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content}" /> </Style>
办法二:直接绑定到列的Header属性
GridViewHeaderCell的DataContext就是对应的GridViewColumn,所以你可以直接绑定到Header属性,这种方式更直接,也能避免样式继承的问题:
<Style TargetType="telerik:GridViewHeaderCell"> <Setter Property="ToolTip" Value="{Binding Header}" /> </Style>
如果你的列头是复杂元素(比如包含图片的布局),这种方式还能确保ToolTip显示的是你设置的原始Header内容,而不是UI元素本身。
内容的提问来源于stack exchange,提问作者lekso
相关产品推荐
相关产品推荐

