【问题标题】:Don't show multi binding tool tip when empty or null为空或为空时不显示多绑定工具提示
【发布时间】: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}&#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>

【问题讨论】:

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

标签: wpf xaml triggers tooltip multibinding


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 2011-08-20
    • 2019-02-28
    • 2017-12-21
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多