以编程方式扩展 DataGrid ColumnHeaderStyle

发布于 2025-01-03 21:34:47 字数 676 浏览 1 评论 0原文

我通过 ResourceDictionary 定义 DataGridColumnHeader 的样式,其中有一个 Setter:

<Style TargetType="{x:Type DataGridColumnHeader}">
  <Setter Property="Background">
    <Setter.Value>
      <LinearGradientBrush EndPoint="0,0" StartPoint="0,1">

等等(并不是很重要。

现在我想通过 ColumnHeader 的工具提示来扩展样式。我必须在代码中设置此工具提示,因为它与在某些情况下,

我可以这样做:

var style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader));
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty,"my tooltop"));
dgcol1.HeaderStyle = style;

但显然资源字典中的所有其他样式设置器都会被覆盖。 如何通过代码将工具提示添加到 ColumnHeader? 有人知道吗?谢谢你!

I'm defining the style of DataGridColumnHeader by ResourceDictionary with a Setter there:

<Style TargetType="{x:Type DataGridColumnHeader}">
  <Setter Property="Background">
    <Setter.Value>
      <LinearGradientBrush EndPoint="0,0" StartPoint="0,1">

and so on (not really important.

Now I want to extend the style by a tooltip for the ColumnHeader. I have to set this tooltip in code because it is different for some situations.

I could do it that way:

var style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader));
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty,"my tooltop"));
dgcol1.HeaderStyle = style;

But obviously all other style setters from the recource dictionary are overwritten then.
How can I add my tooltip to the ColumnHeader by code?
Does anyone have any idea? Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水晶透心 2025-01-10 21:34:47

你可以尝试这个

<Style x:Key="baseStyle" TargetType="{x:Type DataGridColumnHeader}">
  <Setter Property="Background">
    <Setter.Value>
      <LinearGradientBrush EndPoint="0,0" StartPoint="0,1">
    </Setter.Value>
  </Setter Property="Background">
</Style>

<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn={StaticResource baseStyle}>

后面的代码

var style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader));
style.BasedOn = this.TryFindResource("baseStyle") as Style;
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty,"my tooltop"));
dgcol1.HeaderStyle = style;

希望这会有所帮助......

you can try this one

<Style x:Key="baseStyle" TargetType="{x:Type DataGridColumnHeader}">
  <Setter Property="Background">
    <Setter.Value>
      <LinearGradientBrush EndPoint="0,0" StartPoint="0,1">
    </Setter.Value>
  </Setter Property="Background">
</Style>

<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn={StaticResource baseStyle}>

code behind

var style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader));
style.BasedOn = this.TryFindResource("baseStyle") as Style;
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty,"my tooltop"));
dgcol1.HeaderStyle = style;

hope this helps...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文