我假设这不起作用的原因是因为我的触发器正在检查空字符串或null,但我真正拥有的是具有Text属性为空(或为null)的文本块。有谁知道如何轻松修改我的触发器来实现这一目标?我已经搞了半个小时尝试不同的绑定方式/触发器/数据触发器,没有运气。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="ToolTip">
<Setter.Value>
<!--Can't be directly in tool tip, cuz tool tip is object. StringFormat will only work with string-->
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}ID: {0}
X: {1}
Y: {2}">
<Binding Path="MyClass.Id"/>
<Binding Path="MyClass.x"/>
<Binding Path="MyClass.y"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="ToolTip.Content" Value="{x:Static System:String.Empty}">
<Setter Property="ToolTip.Visibility" Value="Collapsed" />
</Trigger>
<Trigger Property="ToolTip.Content" Value="{x:Null}">
<Setter Property="ToolTip.Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
答案 0 :(得分:1)
所以我实际上保持上面的风格完全相同。似乎问题是当我的“MyClass”对象为null时,会显示一个空的工具提示。
但是当“MyClass”为空时,我真的希望工具提示停止显示。
我使用以下数据触发器解决了这个问题:
<DataTrigger Binding="{Binding Path=MyClass}" Value="{x:Null}">
<Setter Property="ToolTip" Value="{x:Null}" />
</DataTrigger>
我不再需要原始帖子中的其他触发器。通过在上面的代码段中将ToolTip
设置为null,工具提示将自动不显示。