2016-08-17 18 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; 
     } 
    } 
} 
モデルを実装

そして、このビューモデル:

<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> 

今: プロジェクト/ ViewModelに/ 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のウィッヒで表示モデルを使用するには、ページです期待されるデータは開発モードで示されます。つまり、アプリを実行していない場合にのみデータが表示されます。

私の質問は以下のとおりです。

  1. 私はバインディングの何が問題になっているのですか?
  2. これを行う適切な方法は何ですか?
  3. アプリを実行するとデータが表示されないのはなぜですか?

私はC#WinRT開発に慣れていますので、どんな提案もありがとうございます。

Screenshot

+0

から継承CategoryViewModeにページをバインドするように私は([いけない><のObservableCollectionから継承する]カテゴリのクラスにはSubProductsSaProductsプロパティがありませんと思いますhttp://stackoverflow.com/q/21692193/1997232 )。 – Sinatr

+0

私はその卿をどのようにするつもりですか? – EJL

+0

'ObservableCollection >'は良いです、 'class MyCollection:ObservableCollection 'はありません。 – Sinatr

答えて

0

あなたはCategoryクラスではないのObservableCollectionから継承する必要があります は、下のスクリーンショットです。 また、あなたがのObservableCollection

+0

あなたはpublic class CategoryViewModel:Publicクラスの代わりにCategoryViewModel:ObservableCollection を意味しますか? – EJL

関連する問題