2011-09-08 34 views
0

我有一個TextBlock的工具提示,顯示相同的數據,在截斷的情況下。但是,如果TextBlock.Text和工具提示文本綁定的屬性爲空(null或零長度字符串),則工具提示將顯示爲一個小空框。有沒有辦法隱藏這個,並在這種情況下顯示沒有工具提示?如何在Silverlight中隱藏空的工具提示?

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

我已經加入Visibility="{Binding Text, Converter={StaticResource StringToVisConverter}}"到TextBlock沒有任何運氣StringToVisibilityConverter嘗試使用。

我也嘗試實施給出的答案Hide tooltip if binding is null,但似乎特定於他們的設置(或至少我還沒有想出如何適應它成功)。

ToolTipManager是從http://www.codeproject.com/Articles/36078/Silverlight-2-0-How-to-use-a-DataBinding-with-the,用來提供數據的工具提示結合。)

編輯:

響應於該評論,這裏是我嘗試了上述相關問題的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); 
    } 
+0

相關:[隱藏工具提示,如果綁定爲空](http://stackoverflow.com/questions/5910994/hide-tooltip-if-binding-is-null) –

+0

你能告訴我你試圖從問題實現的xaml代碼http://stackoverflow.com/questions/5910994/hide-tooltip-if-binding-is-null –

+0

轉換器必須適合你的情況。你可以顯示轉換器的代碼,可能是你錯過了什麼嗎? –

回答

0

我假設您使用Siverlight 4,因爲它是您的標籤之一。

在Silverlight 4中,我非常肯定你不再需要ToolTipManager。

你可以只是包裝的矩形,並用電網,像這樣的TextBlock,

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

UPDATE:

 <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> 
+0

我不認爲這給了我使用工具提示中的TextBlock尋找的文本包裝。 – dlanod

+0

我相信ToolTipService足夠聰明,可以爲你包裝文本。如果你想在裏面定義你自己的TextBlock,你仍然可以。看到我更新的答案 –

0

如果您在使用Silverlight 5,以下似乎工作:

<ToolTipService.ToolTip> 
    <ToolTip Visibility="{Binding WhatDeterminesTooltipVisibility}"> 
     <Border Background="Azure" Width="100" /> 
    </ToolTip> 
</ToolTipService.ToolTip>