2

我假设这不起作用的原因是因为我的触发器正在检查空字符串或 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}&#x0a;X: {1}&#x0a;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>
4

1 回答 1

1

所以我实际上保持了上面的样式完全相同。问题似乎是当我的“MyClass”对象为空时,会显示一个空的工具提示。

但是当“MyClass”为空时,我真的希望工具提示停止显示。

我使用以下数据触发器解决了这个问题:

  <DataTrigger Binding="{Binding Path=MyClass}" Value="{x:Null}">
     <Setter Property="ToolTip" Value="{x:Null}" />
  </DataTrigger>

不再需要我在原始帖子中的其他触发器。通过在上面的代码段中设置ToolTip为 null,工具提示将自动不显示。

于 2013-03-19T22:43:25.513 回答