我有3 textblocks
在stackpanel
在DataTemplate
。给文本块一个保证金,但只有当有内容
的想法是,格式应该是这样的“ABC”与textblocks
,但它可能会发生textblocks
“A”和“B”可能是空之间的空间,所以我结束了这样的“C”(在textblock
c之前两个空格)。我如何确保我有保证金,但只有在有内容的情况下才有保证金?
我有3 textblocks
在stackpanel
在DataTemplate
。给文本块一个保证金,但只有当有内容
的想法是,格式应该是这样的“ABC”与textblocks
,但它可能会发生textblocks
“A”和“B”可能是空之间的空间,所以我结束了这样的“C”(在textblock
c之前两个空格)。我如何确保我有保证金,但只有在有内容的情况下才有保证金?
如果TextBlock
的Visibility
设置为Collapsed
,则不会显示Margin
。所以我想你可以使用StringToVisibilityConverter
来将Visibility
设置为Collapsed
如果Text
为空。
例
首先,你需要创建一个这样的转换器。
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();
}
}
然后,您需要将此转换器包含到您的xaml中。
<converters:StringToVisibilityConverter x:Key="StringToVisibilityConverter " />
最后,使用它你TextBlock
内。
<TextBlock x:Name="MyTextBlock" Text="{Binding SomeText}"
Visibility="{Binding SomeText, Converter={StaticResource StringToVisibilityConverter}}" />
有关如何使用转换器的详细信息,请看一看this post。
希望它有帮助。 :)
将一个转换器添加到边距并将其绑定到Text
属性。如果文本内容为空,转换器会将边距发送到统一厚度0
。
将文本块放在网格中,以便它们的位置是固定的。将转换器添加到martin并将其绑定到文本属性,如果该文本的长度为零,则将边距设置为零。
你有样品吗?我不是那个习惯xaml所以我有点生锈 – Alex
只是增加了一些示例代码:) –
谢谢!它工作得很好! – Alex