我正在制作一个UWP应用,可以调用Web服务并显示数据。我将响应JSON反序列化为C#类并将其存储在ObservableCollection中。我的XAML页面上有一个ListView,它绑定到这个XAML。
但问题是响应JSON有时可能包含某些键的null。在这种情况下,我只想要XAML代码省略绑定为空值的TextBlocks。我如何实现这一目标?
这是我的XAML的片段
<TextBlock Text="Author"/>
<TextBlock Text="{x:Bind Author}"/>
<TextBlock Text="Education Level"/>
<TextBlock Text="{x:Bind EducationLevel}"/>
其中一些{x:Bind XXX}值可能为null,我希望不显示此类字段。
答案 0 :(得分:3)
你需要一个转换器类。
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();
}
}
然后在您的Page资源中实现转换器:
<local:NullStringToVisibilityConverter x:Key="NullStringToVisibilityConverter" />
使用Visibility属性绑定更新您的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}}"/>
答案 1 :(得分:2)
听起来你需要实现一个NullToVisibilityConverter
,这样你就可以隐藏将被绑定为null的TextBlock
。请按照相关问题中的示例进行操作: