如果使用Style.xaml将值设置为null,则Windows应用商店应用折叠TextBlock

时间:2013-11-13 15:01:37

标签: xaml windows-store-apps

如果样式定义是:

<Style x:Key="BodyTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}">
    <Setter Property="FontWeight" Value="SemiLight"/>
</Style>

如果值为null,如何添加会折叠TextBlock的属性?

感谢。

2 个答案:

答案 0 :(得分:2)

<TextBlock Visibility="{Binding RelativeSource={RelativeSource Self}, Path=Text,
               Converter={StaticResource TextIsNullOrEmptyToVisibilityConverter}}"/>

然后,创建名为IValueConverter的{​​{1}},其中包含TextIsNullOrEmptyToVisibilityConverter并根据string返回Visibility枚举。

答案 1 :(得分:2)

感谢Nate的投入。最终解决方案如下所示。

首先创建转换器。

public class TextIsNullOrEmptyToVisibilityConverter : IValueConverter
{
public object IValueConverter.Convert(object value, System.Type targetType,   object parameter, string language)
    {
    string Str = (string)value;
    if (string.IsNullOrEmpty(Str)) {
        return Visibility.Collapsed;
    } else {
        return Visibility.Visible;
    }
}

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

为转换器提供页面XAML文件中的资源键。

<Page.Resources>
    <local:TextIsNullOrEmptyToVisibilityConverter x:Key="visiblityConverter"/>
</Page.Resources>

将资源应用于可见性属性,如上面的Nate所示。

<TextBlock Visibility="{Binding RelativeSource={RelativeSource Self}, Path=Text,
           Converter={StaticResource TextIsNullOrEmptyToVisibilityConverter}}"/>