Wpf 如何绑定ListViewItem';将工具提示设置为ContentTemplate内TextBlock的工具提示
我想将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
<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>