Привязка всплывающей подсказки к тексту - Как избежать маленьких прямоугольников, когда текст пуст - PullRequest
3 голосов
/ 08 декабря 2010

Я связал свойство Tooltip элемента управления в wpf со строкой с именем TooltipText.Значением по умолчанию для TooltipText является пустая строка "".Он заполняется позже при некоторых условиях.

Проблема в том, что когда TooltipText пуст, он выглядит странно, когда пользователь наводит курсор мыши на мой элемент управления, так как отображает всплывающую подсказку с пустым блоком.

Есть лиспособ НЕ ПОКАЗАТЬ всплывающую подсказку, когда TooltipText пуст, но показать ее, когда ее длина больше 1?Надеюсь, я дал понять.

Я делаю это в xaml как (код неполный и только частичный):

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

Ответы [ 2 ]

10 голосов
/ 08 декабря 2010

Установите для свойства null вместо "".

0 голосов
/ 08 декабря 2010

Отличный ответ по этой теме уже .Работает как шарм!

Скопировал соответствующий код здесь для потомков.

<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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...