我有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