2016-08-17 119 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