[英]Conditional element in xaml depending on the binding content
是否可以顯示此TextBlock,僅當Address.Length > 0
? 我想直接在xaml中執行此操作,我知道我可以以編程方式放置所有控件
<TextBlock Text="{Binding Path=Address}" />
基本上,您將需要編寫IValueConverter
以便可以將TextBox
的Visibility
屬性綁定到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 empty
和Visibility.Collapsed
如果它是。
在使用TextBlock
Visibility
屬性綁定Address
時使用此轉換器。
<TextBlock Text="{Binding Path=Address}" Visibility="{Binding Address, Converter={StaticResource StringToVisibilityConverter}}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.