簡體   English   中英

xaml中的條件元素取決於綁定內容

[英]Conditional element in xaml depending on the binding content

是否可以顯示此TextBlock,僅當Address.Length > 0 我想直接在xaml中執行此操作,我知道我可以以編程方式放置所有控件

 <TextBlock Text="{Binding Path=Address}" />

基本上,您將需要編寫IValueConverter以便可以將TextBoxVisibility屬性綁定到Address字段或您創建的新字段。

如果你綁定到Address字段,這里的綁定可能是這樣的::

<TextBlock Text="{Binding Path=Address}"
    Visibility="{Binding Path=Address, Converter={StaticResource StringLengthVisibilityConverter}}" />

然后StringLengthVisiblityConverter看起來像這樣:

public class StringLengthVisiblityConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null || value.ToString().Length == 0)
        {
            return Visibility.Collapsed;
        }
        else
        {
            return Visibility.Visible;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Don't need to implement this
    }
}

然后你只需要將轉換器作為資源添加,使用這樣的語法(其中src映射到定義轉換器的命名空間):

<src:StringLengthVisiblityConverter x:Key="StringLengthVisiblityConverter" />

我會使用另一個名為HasAddress布爾屬性來執行此操作,該屬性返回Address.Length > 0

<!-- In some resources section -->
<BooleanToVisibilityConverter x:Key="Bool2VisibilityConverter" />

<TextBlock 
  Text="{Binding Address}" 
  Visibility="{Binding HasAddress, Converter={StaticResource Bool2VisibilityConverter}}" 
/>

您還應該記得在Address設置器中通知屬性更改HasAddress

您可以創建StringToVisibility轉換器。

它將返回Visibility.Visible如果綁定字符串is not null or emptyVisibility.Collapsed如果它是。

在使用TextBlock Visibility屬性綁定Address時使用此轉換器。

例:

<TextBlock Text="{Binding Path=Address}" Visibility="{Binding Address, Converter={StaticResource StringToVisibilityConverter}}" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM