textblocks
中的stackpanel
中有DataTemplate
个textblocks
。
这个想法是格式应该像“abc”一样,textblocks
之间有空格,但可能会发生textblock
“a”和“b”可能为空,所以我最终得到像这样的“c”({{1}} c之前的两个空格)。我怎样才能确保我有保证金,但只有在有内容的情况下?
答案 0 :(得分:3)
如果TextBlock
的{{1}}设置为Visibility
,则Collapsed
将不会显示。因此,如果Margin
为空,我猜您可以使用StringToVisibilityConverter
将Visibility
设置为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属性,如果该文本的长度为零,则将边距设置为零。