2016-08-17 112 views
1

我已经做了很多关于这个问题的搜索,但仍然无法弄清楚我的项目出了什么问题。流程是这样的:
我想绑定一个视图模型。该视图模型包含observablecollection,其中包含observablecollection。 现在我可以绑定到两个observablecollection同时发展没有问题,但是当我部署它时,其他observablecollection内的数据不显示。在ObservableCollection中绑定ObservableCollection

下面是我的代码:

项目/型号/ SubProduct.cs

class SubProducts 
{ 
    private string subName; 

    public string SubName 
    { 
     get 
     { 
      return subName; 
     } 

     set 
     { 
      subName = value; 
     } 
    } 
} 

项目/型号/ Product.cs

public class Product 
{ 
    private string name; 

    public string Name 
    { 
     get 
     { 
      return name; 
     } 

     set 
     { 
      name = value; 
     } 
    } 
    private ObservableCollection<SubProducts> subProductsSaProducts; 
    internal ObservableCollection<SubProducts> SubProductsSaProducts 
    { 
     get 
     { 
      return subProductsSaProducts; 
     } 

     set 
     { 
      subProductsSaProducts = value; 
     } 
    } 
} 

项目/型号/ Category.cs

class Category 
{ 
    private string title; 
    public string Title 
    { 
     get 
     { 
      return title; 
     } 

     set 
     { 
      title = value; 
     } 
    } 
    private ObservableCollection<Product> subProducts; 
    public ObservableCollection<Product> SubProducts 
    { 
     get 
     { 
      return subProducts; 
     } 

     set 
     { 
      subProducts = value; 
     } 
    } 
} 

和实现模型此视图模型: 项目/视图模型/ CategoryViewModel.cs

class CategoryViewModel : ObservableCollection<Category> 
{ 
    public CategoryViewModel() 
    { 
     ObservableCollection<Product> pCOl1 = new ObservableCollection<Product>(); 

     ObservableCollection<SubProducts> pCol1Sub = new ObservableCollection<SubProducts>(); 
     SubProducts subP1 = new SubProducts(); 
     subP1.SubName = "Lansang"; 
     SubProducts subP2 = new SubProducts(); 
     subP2.SubName = "Lata"; 
     pCol1Sub.Add(subP1); 
     pCol1Sub.Add(subP2); 

     Product p1 = new Product(); 
     p1.Name = "Pothaw"; 
     p1.SubProductsSaProducts = pCol1Sub; 
     pCOl1.Add(p1); 

     ObservableCollection<Product> pCOl2 = new ObservableCollection<Product>(); 
     Product p2 = new Product(); 
     p2.Name = "Taklob sa COke"; 
     pCOl2.Add(p2); 

     Add(new Category() 
     { 
      Title = "Didang", 
      SubProducts = pCOl1 
     }); 
     Add(new Category() 
     { 
      Title = "Plastic", 
      SubProducts = pCOl2 
     }); 
    } 
} 

而且我用的XAML至极视图模型是页:

<Page.DataContext> 
    <vm:CategoryViewModel/> 
</Page.DataContext> 
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <FlipView x:Name="flipView" HorizontalAlignment="Left" VerticalAlignment="Top" Width="360" ItemsSource="{Binding}" Background="#19B0F100"> 
     <FlipView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Foreground="Black" FontSize="30" Text="{Binding Title}"/> 
        <ListView ItemsSource="{Binding SubProducts}" Background="#FF0C0909" Height="600"> 
         <ListView.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Vertical"> 
            <TextBlock Foreground="Red" FontSize="30" Text="{Binding Name}"/> 
            <ListView ItemsSource="{Binding SubProductsSaProducts}" Margin="30,0,0,0" Background="#FF933131" Height="197" Width="300"> 
             <ListView.ItemTemplate> 
              <DataTemplate> 
               <TextBlock Foreground="Yellow" FontSize="20" Text="{Binding SubName}"/> 
              </DataTemplate> 
             </ListView.ItemTemplate> 
            </ListView> 
           </StackPanel> 
          </DataTemplate> 
         </ListView.ItemTemplate> 
        </ListView> 
       </StackPanel> 
      </DataTemplate> 
     </FlipView.ItemTemplate> 
    </FlipView> 
</Grid> 

现在预期的数据显示在开发模式。换句话说,数据仅在未运行应用程序时才显示。

我的问题是:

  1. 什么是错我的绑定?
  2. 什么是正确的方法来做到这一点?
  3. 为什么运行应用程序时数据不显示?

我是新来的C#WinRT开发,所以任何建议将不胜感激。 下面是截图:

Screenshot

+0

[从的ObservableCollection不要继承<>](http://stackoverflow.com/q/21692193/1997232 )。 – Sinatr

+0

我该怎么做那位先生? – EJL

+0

'ObservableCollection >'很好,'class MyCollection:ObservableCollection '不是。 – Sinatr

回答

0

你应该从类别类不继承的ObservableCollection。 此外我认为没有SubProductsSaProducts在Category类属性,你的页面绑定到CategoryViewMode从继承的ObservableCollection

+0

你的意思是,公共类CategoryViewModel:类别而不是公共类CategoryViewModel:ObservableCollection ?但我需要收集项目?我想如何做到这一点? – EJL