Wpf 如何绑定ListViewItem';将工具提示设置为ContentTemplate内TextBlock的工具提示

Wpf 如何绑定ListViewItem';将工具提示设置为ContentTemplate内TextBlock的工具提示,wpf,binding,contenttemplate,Wpf,Binding,Contenttemplate,我想将ListViewItem的工具提示绑定到其ContentTemplate的TextBlock的工具提示 我尝试了以下方法,但无效: <ListView ItemsSource="{Binding DoestMatter}" > <ListView.ItemContainerStyle> <Style TargetType="{x:Type ListViewItem}"> <Setter Propert

我想将ListViewItem的工具提示绑定到其ContentTemplate的TextBlock的工具提示

我尝试了以下方法,但无效:

<ListView ItemsSource="{Binding DoestMatter}" >
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="ToolTip" Value="{Binding ElementName=Title, Path=ToolTip}"/>
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock x:Name="Title" Text="{Binding Title}" ToolTip="Test"/>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

工具提示的值是动态生成的,这里我只是将其显示为静态字符串,但实际上不是,这就是为什么我需要将其绑定到TextBlock的工具提示。


如何使其工作?

您的代码可以正常工作。。。好吧,我不得不更改一些
绑定
s以使其正常工作,但是主XAML很好:

<ListView ItemsSource="{Binding Tests}" >
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="ToolTip" Value="{Binding ToolTip, ElementName=Title}" />
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock x:Name="Title" Text="{Binding Name}" 
                            ToolTip="Test" />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

更新>>>

你说得对。。。
工具提示仍在
文本块上。然后,您只需更新
工具提示。将
绑定到*与
文本
属性相同的值:

<ListView ItemsSource="{Binding Tests}" >
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="ToolTip" Value="{Binding ToolTip}" />
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock x:Name="Title" Text="{Binding Title}" 
                            ToolTip="{Binding ToolTip}" />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

现在您应该看到两个工具提示,一个在
TextBlock
上,另一个在
ListViewItem


更新2>>>

@罗恩,我真的不明白你为什么对我的回答如此消极。。。你真的应该注意你的态度,因为我正试图帮助你,我觉得我不配你的坏态度。因此,为了回应你的第二个更粗鲁的评论:

  • 我说过水平对齐默认设置为拉伸
  • 真的吗?你在哪里说的?事实上,您并没有这么说,而是说ListViewItem在默认情况下会拉伸,这是完全不同的。如评论中所述,我使用
    HorizontalContentAlignment
    属性在
    ListViewItem
    中拉伸
    TextBlock
    ,默认情况下,该属性未设置为
    Stretch

  • 谁说我想要标题作为我的工具提示 没有人这么说,但你确实说过工具提示的值是动态生成的。。。因此,我只能想象您正在绑定动态生成的工具提示。如果是这样,那么您也可以简单地将相同的值数据
    绑定到
    ListViewItem.ToolTip
    属性


    更新3>>>

    针对您最后的评论:

    我从一开始就坚持我的问题,因为我不能真正解释这个问题。虽然我不知道实际的方法,但我知道解决办法是什么。我想绑定到
    TextBlock
    ToolTip
    属性


    很抱歉,在XAML中不能这样做,因为
    TextBlock
    是在
    DataTemplate
    中声明的。您只能访问代码中生成的
    DataTemplate
    元素,因为它们在运行时之前并不存在。。。请参阅MSDN上的页面以了解如何执行此操作。因此,您必须找到另一种方法来实现您的目标,这就是为什么我一直在建议这些其他方法。

    它没有将工具提示放在ListViewItem上。您可以删除绑定,它也可以正常工作。。。也就是说你没有把它绑起来。ListViewItem默认情况下会拉伸,但内容不是(这是我想要的)我没有拉伸ListViewItem
    。。。我正在使用
    HorizontalContentAlignment
    属性拉伸
    TextBlock
    内部,默认情况下该属性未设置为
    stretch
    。但是,您是正确的,ListViewItem.ToolTip绑定仍然存在错误。我说过
    水平对齐
    默认设置为
    拉伸
    。谁说我想要标题作为我的工具提示?我正在使用TextBlockService确定TextBlock是否正在修剪。如果是,则
    文本块的
    工具提示
    为其标题,否则为空。由于
    工具提示
    可以为空,我想将
    列表视图项
    工具提示
    绑定到
    文本块
    工具提示
    ,而不是直接绑定到标题。我对我的态度感到抱歉。有时候我忘了你(人们)想帮忙。我说的
    ListViewItem
    Stretch是指
    HorizontalAlignment
    默认设置为
    Stretch
    。关于工具提示,您的正确率为50%。正如我在上面的评论中所解释的,
    TextBlock
    ToolTip
    TextBlock
    未修剪时设置为null,并且当修剪时,
    ToolTip
    TextBlock
    的标题。因为工具提示在运行时会发生变化,并且是动态的,所以我想绑定到
    TextBlock
    ToolTip
    ,而不是Title属性。我看不出
    null
    值有什么问题。。。如果你用这个,那不是问题。
    <ListView ItemsSource="{Binding Tests}" >
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Setter Property="ToolTip" Value="{Binding ToolTip}" />
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <TextBlock x:Name="Title" Text="{Binding Title}" 
                                ToolTip="{Binding ToolTip}" />
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>