我正在制作一个调用 Web 服务并显示数据的 UWP 应用程序。我将响应 JSON 反序列化为 C# 类并将其存储在 ObservableCollection 中。我的 XAML 页面上有一个绑定(bind)到此 XAML 的 ListView。
但问题是响应 JSON 有时可能包含某些键的 null。在这种情况下,我只希望 XAML 代码省略此类绑定(bind)到空值的 TextBlock。我该如何实现?
这是我的 XAML 的片段
<TextBlock Text="Author"/>
<TextBlock Text="{x:Bind Author}"/>
<TextBlock Text="Education Level"/>
<TextBlock Text="{x:Bind EducationLevel}"/>
其中一些 {x:Bind XXX} 值可以为空,我不想显示此类字段。
最佳答案
为此你需要一个转换器类。
public class NullStringToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var s = (string) value;
return (s!=null) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
然后在您的页面资源中实例化转换器:
<local:NullStringToVisibilityConverter x:Key="NullStringToVisibilityConverter" />
并使用可见性属性的绑定(bind)更新您的 xaml:
<TextBlock Text="Author" Visibility="{x:Bind Author, Converter={StaticResource NullStringToVisibilityConverter}}" />
<TextBlock Text="{x:Bind Author}" Visibility="{x:Bind Author, Converter={StaticResource NullStringToVisibilityConverter}}" />
<TextBlock Text="Education Level" Visibility="{x:Bind EducationLevel, Converter={StaticResource NullStringToVisibilityConverter}}"/>
<TextBlock Text="{x:Bind EducationLevel}" Visibility="{x:Bind EducationLevel, Converter={StaticResource NullStringToVisibilityConverter}}"/>
关于c# - 在 XAML 中过滤空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44203603/