【发布时间】:2013-03-07 09:32:51
【问题描述】:
我假设这不起作用的原因是因为我的触发器正在检查空字符串或 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>
【问题讨论】:
-
仅供参考:stackoverflow.com/a/197130/620360。如果您的 FormatString 包含其他文本,您的 Text 将永远不会为空或为空。
-
感谢链接,但我需要绑定多个属性。奇怪的是,当我在上面绑定的属性 (id,x,y) 为空时,工具提示显示一个空格。我只希望工具提示在工具提示包含文本时显示。
-
我已经在示例应用程序中尝试了您的方案,如果绑定有问题,我只会得到一个空格工具提示。如果一个或所有属性为空,则它们会被遗漏,但会显示格式文本。这就是为什么我认为你的方法行不通。在我看来,最简单的解决方案是工具提示绑定的附加字符串属性,如果有要显示的内容,则返回不为空。
-
感谢您的 cmets,他们帮助我意识到我正在尝试访问空对象的属性。我没有发布完整的sn-p,所以这在我身上。更新了我的帖子以显示我在哪里访问我的 xaml 中的对象
标签: wpf xaml triggers tooltip multibinding