2016-08-17 2 views
1

Я сделал много поисков по этой проблеме, но все же я не могу понять, что не так с моим проектом. Поток выглядит следующим образом:
Я хочу привязать модель просмотра. Эта модель обзора содержит observablecollection, которая содержит observablecollection. Теперь я могу привязываться к обоим observablecollection s при разработке без проблем, но когда я его развертываю, данные внутри другого observablecollection не отображаются.Binding 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; 
     } 
    } 
} 

Project/Model/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; 
     } 
    } 
} 

И эта модель зрения, которая реализует модели: Project/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 Wich страница:

<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

[Dont наследовать от ObservableCollection <>] (http://stackoverflow.com/q/21692193/1997232). – Sinatr

+0

Как я собираюсь сделать это сэр? – EJL

+0

'ObservableCollection >' отлично, 'класс MyCollection: ObservableCollection ' is not. – Sinatr

ответ

0

Вы должны Наследование Категория класса не ObservableCollection. Кроме того, я думаю, что нет SubProductsSaProducts свойства в классе категории, как вы связать страницу с CategoryViewMode, которые наследуют от ObservableCollection

+0

Вы имеете в виду публичный класс CategoryViewModel: Категория вместо публичного класса CategoryViewModel: ObservableCollection ? Но мне нужна коллекция элементов? Как я могу это сделать? – EJL

Смежные вопросы