2014-03-25 56 views
0

列表框这是我的模式,绑定嵌套的JSON在XAML

public class main 
    { 
     public List<categories> categorieslist { get; set; } 
    } 

    public class categories 
    { 
     public int categoryId { get; set; } 
     public string categoryName { get; set; } 
     public List<pdf> pdfdocs { get; set; } 
     public List<video> videoFiles { get; set; } 
    } 

    public class pdf 
    { 
     public string URL { get; set; } 
     public string language { get; set; } 
     public string createdDate { get; set; } 
     public bool isFavorite { get; set; } 
     public bool isRead { get; set; } 
    } 

即时通讯使用JSON.NET反序列化

main mainobj = JsonConvert.DeserializeObject<main>(App.hello); 

我需要为选定的类别显示PDF的名单, 林使用LINQ来过滤该特定类别,我无法绑定PDF列表。

pdf.ItemsSource = App.mainobj.categorieslist.Where(i => i.categoryId.Equals(s)); 

    <ListBox x:Name="pdf" Margin="0,0,0,363" ItemsSource="{Binding}" Foreground="White"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding pdf.URL}" Foreground="White"></TextBlock> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
+0

你有类别列表中的对象吗? – Sajeetharan

+0

mainobj是我创建的唯一对象,它是主类 –

+0

的一个实例什么是mainobj.categorieslist?它里面有物品吗? – Sajeetharan

回答

3
<ListBox ItemsSource="{Binding categorieslist}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding categoryId }" FontSize="20" /> 

       <ItemsControl ItemsSource="{Binding pdf}" Margin="0 20 0 0"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <Border BorderBrush="Blue" BorderThickness="2"> 
           <TextBlock Text="{Binding URL }" FontSize="20" /> 
          </Border> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
       <ItemsControl ItemsSource="{Binding videoFiles}" Margin="0 20 0 0"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <Border BorderBrush="Red" BorderThickness="2"> 
           <TextBlock Text="{Binding URL}" FontSize="20" /> 
          </Border> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
+0

对不起,这不起作用.. –

+0

我修改了答案!只是检查 – Sajeetharan

+0

工作正常..非常感谢:) –