【问题标题】:WPF DataGridTextColumn TooltipWPF DataGridTextColumn 工具提示
【发布时间】:2011-06-17 12:53:42
【问题描述】:

有没有办法将工具提示添加到 DataGridColumn 标题并仍然保留排序功能。下面的代码不起作用(它不显示工具提示)

<toolkit:DataGridTextColumn Header="Test" Width="70" Binding="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}">

当我使用下面的代码时

<toolkit:DataGridTemplateColumn Header="Test" Width="70">  
              <toolkit:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TestText}" ToolTip="{Binding TestText}"  />
                        </DataTemplate>
                    </toolkit:DataGridTemplateColumn.CellTemplate>
                </toolkit:DataGridTemplateColumn>

列失去排序功能..帮助!

【问题讨论】:

标签: wpf wpf-controls wpfdatagrid datagridcolumn


【解决方案1】:

您正在将工具提示添加到列模板,而不是标题。

您是否尝试将 DataGridColumn 上的 HeaderStyle 属性设置为包含包含 HeaderCell 工具提示的模板的样式?

Have a look at this example too

【讨论】:

  • 我更新了我的问题。我想要列中标题下方显示的所有记录的工具提示。不知何故,上面的代码不起作用..
  • @developer:你看过我回答中的例子吗?我还是不明白你想要什么效果。根据您的问题:“将工具提示添加到 DataGridColumn 标题”
【解决方案2】:

当网格创建自动列时,它知道该列中显示的是哪个字段。当您自己创建列时,数据网格不知道您将在该列中显示什么数据,因此它无法猜测要根据哪个字段对列进行排序。 要使您定义的列可排序,请将SortMemberPath 属性添加到您的DataGridTemplateColumn,如下所示:

<DataGridTemplateColumn Header="Test" Width="70" SortMemberPath="TestText">
    ...
</DataGridTemplateColumn>

【讨论】:

    【解决方案3】:

    要让ToolTip 显示在DataGridColumnHeader 中,您需要将其ToolTip 属性绑定到其ToolTipToolTip,如下所示

    <toolkit:DataGridTextColumn Header="Test"
                                Width="70"
                                Binding="{Binding TestText}"
                                ToolTipService.ToolTip="My Tooltip Text">
        <toolkit:DataGridTextColumn.HeaderStyle>
            <Style TargetType="toolkit:DataGridColumnHeader">
                <Setter Property="ToolTip"
                        Value="{Binding RelativeSource={RelativeSource Self},
                                        Path=Column.(ToolTipService.ToolTip)}"/>
            </Style>
        </toolkit:DataGridTextColumn.HeaderStyle>
    </toolkit:DataGridTextColumn>
    

    【讨论】:

    • 工具提示绑定到列属性的一个很好的例子。为此 +1!
    【解决方案4】:

    以前的答案大多是正确的,但我发现它们过于复杂或只解决了帖子的两个问题之一。

    首先,您始终可以设置SortPath 属性以保持对DataGridTemplateColumn 的排序,或者当您想要对某些属性进行排序时,而不是显示的内容。

    其次,您不需要 DataGridTemplateColumn 就可以像 OP 提到的那样在列标题上显示工具提示。如果您想向实际单元格添加工具提示,您可以使用模板列(但这可能也不需要)。在任何情况下,将 ToolTip 添加到列标题最容易通过 HeaderStyle 完成

    <DataGridTextColumn Header="Test" Binding="{Binding TestText}">
        <DataGridTextColumn.HeaderStyle>
            <Style TargetType="DataGridColumnHeader">
                <Setter Property="ToolTip" Value="Test ToolTip" />
            </Style>
        </DataGridTextColumn.HeaderStyle>
    </DataGridTextColumn>
    

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2019-02-02
      • 2020-08-31
      • 2020-07-18
      • 2014-11-23
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多