给文本块一个保证金,但只有在有内容的情况下

时间:2011-11-22 11:46:42

标签: silverlight xaml windows-phone-7

textblocks中的stackpanel中有DataTemplatetextblocks

这个想法是格式应该像“abc”一样,textblocks之间有空格,但可能会发生textblock“a”和“b”可能为空,所以我最终得到像这样的“c”({{1}} c之前的两个空格)。我怎样才能确保我有保证金,但只有在有内容的情况下?

3 个答案:

答案 0 :(得分:3)

如果TextBlock的{​​{1}}设置为Visibility,则Collapsed将不会显示。因此,如果Margin为空,我猜您可以使用StringToVisibilityConverterVisibility设置为Collapsed

示例

首先,您需要创建一个这样的转换器。

Text

然后您需要将此转换器包含在您的xaml中。

public class StringToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return Visibility.Collapsed;

        if (value != null && string.IsNullOrWhiteSpace(value.ToString()))
            return Visibility.Collapsed;

        return Visibility.Visible;
    }

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

最后,在<converters:StringToVisibilityConverter x:Key="StringToVisibilityConverter " />

中使用它
TextBlock

有关如何使用转换器的更多信息,请查看this post

希望它有所帮助。 :)

答案 1 :(得分:0)

将转换器添加到边距并将其绑定到Text属性。如果文本内容为空,则转换器将边距发送到0的统一厚度。

答案 2 :(得分:0)

将文本块放在网格中,以便修复其位置。将转换器添加到martin并将其绑定到text属性,如果该文本的长度为零,则将边距设置为零。