2016-08-17 4 views
1

이 문제에 대한 많은 검색을 수행했지만 여전히 내 프로젝트에 어떤 문제가 있는지 알 수 없습니다. 이 흐름은 다음과 같습니다.
View Model을 바인딩하고 싶습니다. 이 뷰 모델에는 observablecollection이 포함 된 observablecollection이 포함되어 있습니다. 이제 아무 문제없이 개발하는 동안 observablecollection에 바인딩 할 수 있지만 배포 할 때 다른 observablecollection 내부의 데이터는 표시되지 않습니다.ObservableCollection 내에서 ObservableCollection 바인딩

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은/Product.cs

프로젝트/모델/SubProduct.cs

class SubProducts 
{ 
    private string subName; 

    public string SubName 
    { 
     get 
     { 
      return subName; 
     } 

     set 
     { 
      subName = value; 
     } 
    } 
} 

프로젝트/모델 : 아래

내 코드입니다

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; 
     } 
    } 
} 
모델 구현 617,451,515,

그리고이 뷰 모델 :

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

지금 : 프로젝트/뷰 모델/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

[<> 망가 ObservableCollection에 상속] ObservableCollection에에서 상속하는 생각 http://stackoverflow.com/q/21692193/1997232). – Sinatr

+0

어떻게해야합니까? – EJL

+0

'ObservableCollection >'괜찮습니다. 'class MyCollection : ObservableCollection '이 아닙니다. – Sinatr

답변

0

당신은 Category 클래스하지 ObservableCollection에로부터 상속해야합니다 은 아래의 스크린 샷이다. 이 또한 내가 거기 Category 클래스의 속성이 더 SubProductsSaProducts에게 없습니다 당신이 CategoryViewMode에 페이지를 바인딩으로 (

+0

public class CategoryViewModel : public class CategoryViewModel : ObservableCollection 대신에 공용 클래스를 의미하는가?하지만 아이템 컬렉션이 필요합니까? 어떻게해야할까요? – EJL

관련 문제