2013-04-28 60 views
0

如何使textBlock自动隐藏,如果在Windows Phone 7应用程序中为空(C#,silverlight,xaml)?在windows phone 7中隐藏空textBlock?

我知道WPF有一个类似的问题,但它似乎不适用于silverlight。

+0

您在使用上的TextBlock或不绑定? – Kenneth 2013-04-28 22:23:47

回答

8

您可以使用转换器:

<TextBlock Visibility="{Binding YourString, Converter={StaticResource LengthConverter}" /> 

<UserControl.Resources> 
    <converter:LengthConverter x:Key="LengthToVisibilityConverter" /> 
</UserControl.Resources> 

然后转换为:

<TextBlock Visibility="{Binding YourString.Length, Converter={StaticResource LengthConverter}" /> 

public class LengthToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string text = (string)value; 
     return text.Length > 0 ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

你可以通过绑定直接文本长度使这稍微干净在这种情况下,转换器变成:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     int length = (int)value; 
     return length > 0 ? Visibility.Visible : Visibilty.Collapsed; 
    } 

了解更多有关转换器的位置:http://msdn.microsoft.com/en-us/library/system.windows.data.binding.converter(v=vs.110).aspx