工具提示绑定到文本 - 当文本为空白时如何避免出现小矩形

发布于 2024-10-06 08:19:40 字数 368 浏览 1 评论 0原文

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

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

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

我在 xaml 中执行此操作(代码不完整且仅部分):

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

I have bound the Tooltip property of a control in wpf to a string called TooltipText .
TooltipText default value is empty string "". It gets populated later on under some conditions.

The problem is when the TooltipText is empty it looks odd when the user does mouse over my control as it displays an empty box tooltip.

Is there a way to NOT SHOW the tooltip when TooltipText is empty but show it when its length is greater than 1? I hope I made myself clear.

I do this in xaml as (code is incomplete and only partial):

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尐偏执 2024-10-13 08:19:40

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

Set the property to null instead of "".

相思故 2024-10-13 08:19:40

关于这个主题已经很好的答案。效果就像一个魅力!

在这里复制相关代码以供后代使用。

<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;
}

Excellent answer on this topic already. Works like a charm!

Copied the relevant code here for posterity.

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

Code behind:

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文