如何在我的Gridview列标题WPF VS2010上添加工具提示文本

时间:2012-06-22 11:11:40

标签: wpf gridview columnheader

这是我的网格,当鼠标悬停在该标题上以显示探索时,该标题为“RED.BROJ”。文本。

<ListView.View>
    <GridView>
        <GridViewColumn Width="50"
                        Header="Реd.Број"
                        DisplayMemberBinding="{Binding Path=RedenBroj}">
        </GridViewColumn>

3 个答案:

答案 0 :(得分:7)

你可以这样做:

<GridViewColumn Width="50"
                DisplayMemberBinding="{Binding Path=RedenBroj}">
    <GridViewColumn.Header>
        <TextBlock Text="Ред.Број"
                   ToolTip="Your explanation" />                      
    </GridViewColumn.Header>        
</GridViewColumn>

答案 1 :(得分:6)

响应稍晚,但您可以通过执行以下操作添加工具提示,而不会失去拖动列以重新排序的能力:

<ListView.View>
    <GridView>
        <GridView.ColumnHeaderContainerStyle>
            <Style TargetType="GridViewColumnHeader">
                <Setter Property="ToolTip"
                        Value="{Binding Content, RelativeSource={RelativeSource Self}}"/>
            </Style>
        </GridView.ColumnHeaderContainerStyle>

        <GridViewColumn DisplayMemberBinding="{Binding A}" Header="A"/>
        <GridViewColumn DisplayMemberBinding="{Binding B}" Header="B"/>
        <GridViewColumn DisplayMemberBinding="{Binding C}" Header="C"/>
    </GridView>
</ListView>

更新:感谢LPL

更简洁的版本

进一步更新:我希望能够让所有列都有与其标题匹配的工具提示(因为有些列太窄而无法显示整个标题):

bash

答案 2 :(得分:0)

没有什么比用你自己的回答一个老问题更...

我受到 @Scroog1 的 回答的启发,但似乎有点多余,因为 Tooltip 只是模仿了那里的内容。您通常需要 Tooltip,因为您已经缩写了列标题文本。

我创建了一个小的 AttachedProperty,我在 Tooltip 上设置了我的 GridViewColumn 值。然后我从我的 bind Style 到我的 GridViewColumnHeader

现在我只定义一次 Style,然后将它和 AttachedProperty 添加到我想使用它的地方。

XML

    <Style x:Key="GridViewColumnHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
        <Setter Property="ToolTip" Value="{Binding Path=Column.(attachedProperties:GridViewColumnHeaderToolTipAttachedProperty.Tooltip), RelativeSource={RelativeSource Self}}" />
    </Style>

    <GridView x:Key="GridViewFuelConsumption"
              x:Shared="False">
        <GridViewColumn Header="Ред.Број"
                        DisplayMemberBinding="{Binding RedenBroj}"
                        HeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle}"
                        attachedProperties:GridViewColumnHeaderToolTipAttachedProperty.Tooltip="Your explanation" />
    </GridView>

附加属性

public sealed class GridViewColumnHeaderToolTipAttachedProperty : DependencyObject
{
    public static readonly DependencyProperty TooltipSourceProperty = DependencyProperty.RegisterAttached(
        "Tooltip",
        typeof(string),
        typeof(GridViewColumnHeaderToolTipAttachedProperty),
        new PropertyMetadata("null"));

    public static void SetTooltip(DependencyObject element, string value)
    {
        element.SetValue(TooltipSourceProperty, value);
    }

    public static string GetTooltip(DependencyObject element)
    {
        return (string)element.GetValue(TooltipSourceProperty);
    }
}