好的,这是我的XAML代码:
<TextBlock Text="{Binding Path=InstanceName}"></TextBlock>
如果 InstanceName
是 null 或空字符串,则我希望 Visibility="Collapsed"
。否则,我希望 Visibility="Visible"
。我该怎么做?
好的,这是我的XAML代码:
<TextBlock Text="{Binding Path=InstanceName}"></TextBlock>
如果 InstanceName
是 null 或空字符串,则我希望 Visibility="Collapsed"
。否则,我希望 Visibility="Visible"
。我该怎么做?
您可以使用 ValueConverter:
<TextBlock
Visibility="{Binding InstanceName, Converter={local:StringNullOrEmptyToVisibilityConverter}}"
Text="{Binding InstanceName}"/>
使用以下代码:
public class StringNullOrEmptyToVisibilityConverter : System.Windows.Markup.MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return string.IsNullOrEmpty(value as string)
? Visibility.Collapsed : Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
如果您在(数据)模板内部,可以使用触发器。
否则,MVVM模式或值转换器将对您有所帮助。
public class ViewModel
{
public string InstanceName {...}
public Visibility InstanceVisibility
{
get
{
return String.IsNullOrEmpty(InstanceName) ? Visibility.Collapsed : Visibility.Visible;
}
}
<TextBlock Text="{Binding Path=InstanceName},FallbackValue={x:Null}"></TextBlock>
然后添加一个DataTrigger来检查值是否为null,并使用Setter更改可见性。这是我正在使用的简单方法。
好的,这与PyBinding接近:
<TextBlock Text="{Binding Path=InstanceName}" Visibility="{p:PyBinding BooleanToVisibility(IsNotNull($[.InstanceName]))}" ></TextBlock>
我需要用一个意思是IsNotNullOrEmpty的东西来替换IsNotNull,但我正在接近。