工具提示绑定到文本 - 如何在文本为空时避免使用小矩形

时间:2010-12-08 15:53:20

标签: c# wpf xaml

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

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

有什么方法可以在TooltipText为空时不显示工具提示,但是当它的长度大于1时显示它?我希望我能说清楚。

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

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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

关于此主题的优秀答案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;
}