2013-10-02 226 views
3

如何隐藏Windows Phone 8中的TextBlock(如果它没有文字)?Windows Phone 8 TextBlock

<StackPanel> 
    <TextBlock Text="{Binding Name}" FontSize="22" Margin="0,5,10,0" TextWrapping="NoWrap" TextAlignment="Center" TextTrimming="WordEllipsis" /> 
    <Image Source="{Binding Icon}" MaxWidth="36" MaxHeight="36" HorizontalAlignment="Left" Margin="10,-33,10,10" Stretch="Fill"/> 
    <TextBlock Text="{Binding Description}" FontSize="14" Margin="10,0,10,5" MaxHeight="60" TextWrapping="Wrap" TextTrimming="WordEllipsis" /> 
</StackPanel> 

我想隐藏文本块“描述”,如果它里面没有任何文本。这将如何成为可能?

这是一个多个“viewmodel”文本块,因此它没有名称,不能单独检查,因为每5-15秒加载超过20+的性能问题。

回答

3

您将需要创建一个分析字符串的长度的IValueConverter,

public class HideEmptyStringConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     var input = (string)value; 
     return string.IsNullOrWhiteSpace(input) ? Visibility.Collapsed : Visibility.Visible; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

转换器的实例添加到您的网页资源,然后绑定的可见性属性,以使用转换器的说明.. 。

<TextBlock Text="{Binding Description}" Visibility="{Binding Description, Converter={StaticResource HideEmptyStringConverter}}" FontSize="14" Margin="10,0,10,5" MaxHeight="60" TextWrapping="Wrap" TextTrimming="WordEllipsis" />