2011-11-22 23 views
0

我有3 textblocksstackpanelDataTemplate給文本塊一個保證金,但只有當有內容

的想法是,格式應該是這樣的「ABC」與textblocks,但它可能會發生textblocks「A」和「B」可能是空之間的空間,所以我結束了這樣的「C」(在textblock c之前兩個空格)。我如何確保我有保證金,但只有在有內容的情況下才有保證金?

回答

3

如果TextBlockVisibility設置爲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

希望它有幫助。 :)

+0

你有樣品嗎?我不是那個習慣xaml所以我有點生鏽 – Alex

+0

只是增加了一些示例代碼:) –

+0

謝謝!它工作得很好! – Alex

0

將一個轉換器添加到邊距並將其綁定到Text屬性。如果文本內容爲空,轉換器會將邊距發送到統一厚度0

0

將文本塊放在網格中,以便它們的位置是固定的。將轉換器添加到martin並將其綁定到文本屬性,如果該文本的長度爲零,則將邊距設置爲零。

相關問題