【问题标题】:Tooltip binding to text - How to avoid a small rectangles when text is blank工具提示绑定到文本 - 如何在文本为空白时避免出现小矩形
【发布时间】:2011-05-22 07:48:41
【问题描述】:

我已将 wpf 中控件的 Tooltip 属性绑定到名为 TooltipText 的字符串。 TooltipText 默认值为空字符串“”。在某些情况下,它稍后会被填充。

问题是当 TooltipText 为空时,当用户将鼠标悬停在我的控件上时,它看起来很奇怪,因为它显示了一个空框工具提示。

有没有办法在 TooltipText 为空时不显示工具提示,但在其长度大于 1 时显示?我希望我说清楚了。

我在 xaml 中这样做(代码不完整,只是部分):

<c:MyControl ToolTip="{Binding ElementName=controlName, Path=TooltipText}">

【问题讨论】:

  • 所以,尝试默认设置tooltip = null

标签: c# wpf xaml


【解决方案1】:

将属性设置为null,而不是""

【讨论】:

    【解决方案2】:

    关于这个主题的优秀答案already。像魅力一样工作!

    复制相关代码供后人参考。

    <TextBlock Text="{Binding Text}"
         IsMouseDirectlyOverChanged="TextBlock_IsMouseDirectlyOverChanged" >
         <TextBlock.ToolTip>
         <ToolTip Visibility="Collapsed">
             <TextBlock Text="{Binding Text}"></TextBlock>
         </ToolTip>
         </TextBlock.ToolTip>
    </TextBlock>
    

    后面的代码:

    private void TextBlock_IsMouseDirectlyOverChanged(object sender, e)
    {
        bool isMouseOver = (bool)e.NewValue;
        if (!isMouseOver)
            return;
        TextBlock textBlock = (TextBlock)sender;
        bool needed = textBlock.ActualWidth > 
            (this.listView.View as GridView).Columns[2].ActualWidth;
        ((ToolTip)textBlock.ToolTip).Visibility = 
            needed ? Visibility.Visible : Visibility.Collapsed;
    }
    

    【讨论】:

    • 感谢您的回复...但这看起来代码太多,无法实现我想要的功能...。也可以将默认值设置为 null !
    猜你喜欢
    • 1970-01-01
    • 2018-04-19
    • 2020-03-18
    • 2018-07-03
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多