2017-05-26 116 views
1

我正在製作一個調用Web服務並顯示數據的UWP應用程序。我將反應JSON反序列化爲C#類並將其存儲在ObservableCollection中。在我的XAML頁面上有一個綁定到這個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:綁定XXX}值可以爲空,我想不顯示等領域。

+0

您需要過濾的源集合。如果你向我展示如何填充ListView,XAML和viewmodel屬性,我可以幫你。 –

+0

@EdPlunkett補充。 –

+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(); 
    } 
} 

然後實例化轉換器在你的頁面資源:

<local:NullStringToVisibilityConverter x:Key="NullStringToVisibilityConverter" /> 

,並與能見度的綁定更新您的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}}"/>