Windows phone 来自c sharp的GridView分组

Windows phone 来自c sharp的GridView分组,windows-phone,windows-phone-8.1,winrt-xaml,win-universal-app,Windows Phone,Windows Phone 8.1,Winrt Xaml,Win Universal App,我需要显示不同的视图,即分组和非分组列表。我用的是GridView 我有两个来自视图模型的列表,一个是用于非分组视图的直接列表,另一个是用于分组视图的列表组 Lst_Videos = List<VideoItem> - For Non Grouping View Lst_grp = List<VideoGrp> - For Grouping View public Class VideoGrp { public string Key { get; set; } pu

我需要显示不同的视图,即分组和非分组列表。我用的是GridView

我有两个来自视图模型的列表,一个是用于非分组视图的直接列表,另一个是用于分组视图的列表组

Lst_Videos = List<VideoItem> - For Non Grouping View

Lst_grp = List<VideoGrp> - For Grouping View

public Class VideoGrp
{

public string Key { get; set; }
public int ItemsCount { get; set; }

public List<VideoItem> Items { get; set; }

}

public Class VideoItem
{

public string MediaId { get; set; }

public string PictureTitle { get; set; }
}
它工作得非常好

现在我想点击应用程序栏按钮切换到其他视图。所以我喜欢这个

private void AppBarButton_Click_List(object sender, RoutedEventArgs e)
    {
        MainGrps.Source = null;
        MainGrps.ItemsPath = null;
        SharedGriidViewUI.ItemsSource = null;

        MainGrps.Source = ((ExtraPageViewModel)this.DataContext).Lst_Videos ;
        SharedGriidViewUI.ItemsSource = MainGrps.Source;
        SharedGriidViewUI.ItemTemplate = ItmTemplateList;
    }
private void AppBarButton_Click_TimeLine(object sender, RoutedEventArgs e)
    {
        MainGrps.Source = null;
        SharedGriidViewUI.ItemsSource = null;

        MainGrps.Source = ((ExtraPageViewModel)this.DataContext).Lst_Grp;
        MainGrps.ItemsPath = new PropertyPath("Items");
        SharedGriidViewUI.ItemsSource = MainGrps.Source;
        SharedGriidViewUI.ItemTemplate = ItmTemplateTimeLine;
    }
这也很好

现在单击AppBarButton,我想再次显示分组视图。我确实喜欢这个

private void AppBarButton_Click_List(object sender, RoutedEventArgs e)
    {
        MainGrps.Source = null;
        MainGrps.ItemsPath = null;
        SharedGriidViewUI.ItemsSource = null;

        MainGrps.Source = ((ExtraPageViewModel)this.DataContext).Lst_Videos ;
        SharedGriidViewUI.ItemsSource = MainGrps.Source;
        SharedGriidViewUI.ItemTemplate = ItmTemplateList;
    }
private void AppBarButton_Click_TimeLine(object sender, RoutedEventArgs e)
    {
        MainGrps.Source = null;
        SharedGriidViewUI.ItemsSource = null;

        MainGrps.Source = ((ExtraPageViewModel)this.DataContext).Lst_Grp;
        MainGrps.ItemsPath = new PropertyPath("Items");
        SharedGriidViewUI.ItemsSource = MainGrps.Source;
        SharedGriidViewUI.ItemTemplate = ItmTemplateTimeLine;
    }
现在我看不到名单了。我得到绑定错误异常

错误:BindingExpression路径错误:“Qts.Models.TimeLineGoup”上未找到“MediaId”属性

错误:BindingExpression路径错误:“Qts.Models.TimeLineGoup”上未找到“PictureTile”属性 这意味着Xaml这次希望Grp Direct中的PictureTile和MediaID而不是组中的Items属性

所以请告诉我哪里错了。如何从cs文件绑定组。请建议或帮助我解决这个问题

感谢并问候Sunil Kumar S C

让它工作起来。 我将MainGrps.Source更改为MainGrps.Source.View; 工作很有魅力

MainGrps.Source=((ExtraPageViewModel)this.DataContext).Lst_Grp; SharedGriidViewUI.ItemsSource=MainGrps.Source.View

成功了。 我将MainGrps.Source更改为MainGrps.Source.View; 工作很有魅力

MainGrps.Source=((ExtraPageViewModel)this.DataContext).Lst_Grp;
SharedGriidViewUI.ItemsSource=MainGrps.Source.View

您可以拥有两个网格视图,并在单击事件上设置其可见性,而不是更改GridView的项目源和其他属性。我认为就性能而言,它不应该比你现在所做的更糟糕。嘿,考虑到两个网格视图,而且玩可见性更糟糕,我相信因为CollectionViewSource不是UI元素,而是资源属性。无论如何,感谢您不要更改GridView的项目源和其他属性,您可以有两个网格视图,并在单击事件上设置它们的可见性。我认为就性能而言,它不应该比你现在所做的更糟糕。嘿,考虑到两个网格视图,而且玩可见性更糟糕,我相信因为CollectionViewSource不是UI元素,而是资源属性。无论如何,感谢您不要更改GridView的项目源和其他属性,您可以有两个网格视图,并在单击事件上设置它们的可见性。我认为就性能而言,它不应该比你现在所做的更糟糕。嘿,考虑到两个网格视图,而且玩可见性更糟糕,我相信因为CollectionViewSource不是UI元素,而是资源属性。无论如何,谢谢