我有一个带有工具提示的TextBlock,在截断的情况下显示相同的数据。但是,如果TextBlock.Text和工具提示的文本绑定的属性为空(null或零长度字符串),则工具提示显示为一个小空框。有没有办法隐藏这个并且在这种情况下不显示工具提示?
<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而没有任何运气。
我也试过实现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>
这是我的String to Visibility转换器代码:
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 :(得分:0)
我假设您使用的是Siverlight 4,因为它是您的标签之一。
在Silverlight 4中,我很确定你不再需要ToolTipManager了。
你可以用一个Grid包装Rectangle和TextBlock,就像这样,
<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>
答案 1 :(得分:0)
如果您使用的是Silverlight 5,则以下似乎有效:
$line=" <szFilename>  ds </szFilename> ";
//$line2=" <szFilenamed1>  ds </szFilenamed1> ";
//echo trim($line);
if(preg_match("/[<szFilename>]*/",trim($line))){
echo "GOT IT";
}