您的代码可以正常工作...好吧,我必须更改一些Binding
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>
但是,我确实注意到的一件事是,它仅在您将光标直接放在 上时才有效,并且TextBlock
不会延伸到. 要解决这个问题,只需将属性设置为:ListViewItem
HorizontalContentAlignment
Stretch
<ListView ItemsSource="{Binding Tests}" >
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ToolTip" Value="{Binding ToolTip, ElementName=Title}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock x:Name="Title" Text="{Binding Name}"
ToolTip="Test" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
更新>>>
你是对的......ToolTip
仍然在TextBlock
。然后,您只需将您的值更新ToolTip.Binding
为与该Text
属性相同的值:
<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>
现在您应该看到 2 个工具提示,一个在结束时,TextBlock
一个在结束时ListViewItem
。
更新 2 >>>
@Ron,我真的不明白你为什么对我的回答做出如此消极的反应......你真的应该注意你的态度,因为我正在努力帮助你,我觉得我不应该得到你的坏态度. 因此,为了解决您的第二个甚至更粗鲁的评论:
- 我说HorizontalAlignment默认设置为Stretch
真的吗?你在哪里说的?事实上,你没有这么说,你说ListViewItem 在 default 上延伸,这是完全不同的东西。正如评论中提到的,我正在使用属性拉伸TextBlock
内部,默认情况下ListViewItem
该HorizontalContentAlignment
属性未设置为Strecth
。
- 谁说我想要标题作为我的工具提示?
没有人这么说,但你确实说过ToolTip 的值是动态生成的……所以我只能想象你是Binding
你动态生成 ToolTip
的。如果是这样,那么您也可以简单地Bind
将相同的值数据传输到ListViewItem.ToolTip
属性中。
更新 3 >>>
回应您的最后评论:
我从一开始就坚持我的问题,因为我无法真正解释这个问题。尽管我不知道实际的方法,但我知道解决方案是什么。我想绑定到TextBlock
的ToolTip
属性。
很抱歉,但你不能在 XAML 中这样做,因为TextBlock
在DataTemplate
. 您只能DataTemplate
在代码中访问生成的元素,因为它们直到运行时才存在......请参阅 MSDN 上的How to: Find DataTemplate-Generated Elements页面以了解如何执行此操作。所以你必须找到另一种方法来实现你的目标,这就是为什么我一直在建议这些其他方法。