Как скрыть пустую подсказку в Silverlight? - PullRequest
1 голос
/ 08 сентября 2011

У меня есть TextBlock с всплывающей подсказкой, которая отображает те же данные, в случае усечения. Однако если свойство, к которому привязан TextBlock.Text и текст всплывающей подсказки, пустое (строка нулевой или нулевой длины), всплывающая подсказка отображается в виде небольшого пустого поля. Есть ли способ скрыть это и не показывать подсказку в этом случае?

<TextBlock Text="{Binding Text}">
    <util:ToolTipManager.ToolTip>
        <TextBlock TextWrapping="Wrap" Text="{Binding Text}" />
    </util:ToolTipManager.ToolTip>
</TextBlock>

Я попытался использовать StringToVisibilityConverter, добавив Visibility="{Binding Text, Converter={StaticResource StringToVisConverter}}" в TextBlock без какой-либо удачи.

Я также пытался реализовать ответ, данный Скрыть подсказку, если привязка равна нулю , но это кажется специфическим для их установки (или, по крайней мере, я не выяснил, как ее успешно адаптировать). *

(ToolTipManager из http://www.codeproject.com/Articles/36078/Silverlight-2-0-How-to-use-a-DataBinding-with-the, используется для обеспечения привязки данных для всплывающей подсказки.)

Edit:

В ответ на комментарии вот XAML, который я пробовал для указанного выше вопроса:

    <TextBlock Text="{Binding PointName}">
        <local:ToolTipManager.ToolTip>
            <Grid>
                <TextBlock TextWrapping="Wrap" Text="{Binding PointName}"/>
                <Rectangle Fill="Transparent"  Visibility="{Binding PointName, Converter={StaticResource StringToVisConverter}}" />
            </Grid>
        </local:ToolTipManager.ToolTip>
    </TextBlock>

А вот мой код конвертера строки в видимость:

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string visible = (string)value;
        return (!String.IsNullOrWhiteSpace(visible) ? Visibility.Visible : Visibility.Collapsed);
    }

Ответы [ 2 ]

0 голосов
/ 29 мая 2015

Если вы используете Silverlight 5, похоже, что работает следующее:

<ToolTipService.ToolTip>
    <ToolTip Visibility="{Binding WhatDeterminesTooltipVisibility}">
        <Border Background="Azure" Width="100" />
    </ToolTip>
</ToolTipService.ToolTip>
0 голосов
/ 09 сентября 2011

Полагаю, вы используете Siverlight 4, поскольку он является одним из ваших тегов.

В Silverlight 4 я почти уверен, что вам больше не нужен ToolTipManager.

Вы можетепросто оберните прямоугольник и текстовый блок сеткой, например,

        <Grid> 
            <TextBlock Text="{Binding PointName}"/> 
            <Rectangle Fill="Transparent" Visibility="{Binding PointName, Converter={StaticResource BooleanToVisibilityConverter}}" ToolTipService.ToolTip="{Binding PointName}"/> 
        </Grid> 

ОБНОВЛЕНИЕ:

        <Grid> 
            <TextBlock Text="{Binding PointName}"/> 
            <Rectangle Fill="Transparent" Visibility="{Binding PointName, Converter={StaticResource BooleanToVisibilityConverter}}">
                <ToolTipService.ToolTip>
                    <TextBlock TextWrapping="Wrap" Text="{Binding PointName}"/>             
                </ToolTipService.ToolTip>                       
            </Rectangle> 
        </Grid> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...