Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从分组的gridview构造数据_C#_Xaml_Windows 8_Windows Runtime_Winrt Xaml - Fatal编程技术网

C# 如何从分组的gridview构造数据

C# 如何从分组的gridview构造数据,c#,xaml,windows-8,windows-runtime,winrt-xaml,C#,Xaml,Windows 8,Windows Runtime,Winrt Xaml,如何在gridview中为分组集合创建集合 当我创建列表组时,我会得到分组数据,每个组中有大量的组和元素,但我没有组标题。 所以我创建了对象MyGroupedObject,它有两个字段 public String Key; public List<MyObject> items; 公共字符串密钥; 公共清单项目; 所以我把它分组在对象中。但当我将其传递到网格视图(如下图所示)时,我什么都没有。没有项目,没有组,什么都没有 <Page.Resources> <!

如何在gridview中为分组集合创建集合

当我创建
列表
组时,我会得到分组数据,每个组中有大量的组和元素,但我没有组标题。 所以我创建了对象MyGroupedObject,它有两个字段

public String Key;
public List<MyObject> items;
公共字符串密钥;
公共清单项目;
所以我把它分组在对象中。但当我将其传递到网格视图(如下图所示)时,我什么都没有。没有项目,没有组,什么都没有

 <Page.Resources>
<!--
    Collection of grouped items displayed by this page, bound to a subset
    of the complete item list because items in groups cannot be virtualized
-->
<CollectionViewSource
    x:Name="groupedItemsViewSource"
    IsSourceGrouped="true"
    />

</Page.Resources>

而在gridview中,我只是将此集合绑定为ItemsSource

这个问题基于:


我在原版中创建了一个新的原因,它解决了许多问题,所以我想说清楚

您看过分组和语义缩放示例了吗

您还可以查看如何在列表或网格中对项目进行分组。。。

简短的解释是。。。你可以用两种方法中的一种

List<Activity> Activities = new List<Activity>(); 
Activities.Add(new Activity() 
    { Name = "Activity 1", Complete = true, 
            DueDate = startDate.AddDays(4), Project = "Project 1" });
Activities.Add(new Activity() 
    { Name = "Activity 2", Complete = true, 
            DueDate = startDate.AddDays(5), Project = "Project 2" });
或者您可以使用如下对象属性构建层次结构

List<Project> Projects = new List<Project>();

Project newProject = new Project();
newProject.Name = "Project 1";
newProject.Activities.Add(new Activity() 
    { Name = "Activity 1", Complete = true, DueDate = startDate.AddDays(4) });
newProject.Activities.Add(new Activity() 
    { Name = "Activity 2", Complete = true, DueDate = startDate.AddDays(5) });
newProject.Activities.Add(new Activity() 
    { Name = "Activity 3", Complete = false, DueDate = startDate.AddDays(7) });
newProject = new Project();
newProject.Name = "Project 2";
newProject.Activities.Add(new Activity() 
    { Name = "Activity A", Complete = true, DueDate = startDate.AddDays(2) });
newProject.Activities.Add(new Activity() 
    { Name = "Activity B", Complete = false, DueDate = startDate.AddDays(3) });
cvsProjects.Source = Projects;
List Projects=newlist();
Project newProject=新项目();
newProject.Name=“项目1”;
newProject.Activities.Add(新活动()
{Name=“Activity 1”,Complete=true,DueDate=startDate.AddDays(4)});
newProject.Activities.Add(新活动()
{Name=“Activity 2”,Complete=true,DueDate=startDate.AddDays(5)});
newProject.Activities.Add(新活动()
{Name=“Activity 3”,Complete=false,DueDate=startDate.AddDays(7)});
newProject=新项目();
newProject.Name=“项目2”;
newProject.Activities.Add(新活动()
{Name=“活动A”,Complete=true,DueDate=startDate.AddDays(2)});
newProject.Activities.Add(新活动()
{Name=“活动B”,Complete=false,DueDate=startDate.AddDays(3)});
cvsProjects.Source=项目;

您不能绑定到简单列表并自动为您配置分组。

您的数据应该与MyGroupObject的定义相同

class MyGroupObject
{
    public String Key; // used for group title
    public IList<MyObject> Items;
}
<CollectionViewSource
    x:Name="groupedItemsViewSource"
    IsSourceGrouped="true"
    Source="{Binding GroupItems}" <!-- Property in the backing ViewModel -->
    ItemsPath="Items" <!-- Property on the MyGroupObject class -->
/>

但这个项目的例子正是我所做的。您有一个名为(my Key)和活动(my items)的对象项目。然后我将其设置为收集源。这就是我所描述的,它不起作用。谢谢你的链接,我会仔细检查的杰夫,你的链接和解释是无价的。我找到了解决办法。问题是我的数据模型中的一个小错误,我改进了分组。现在一切都正常了。上面不清楚,关键是使用CollectionViewSource。仅将此“集合集合”设置为GridView.ItemsSource将不起作用。必须设置GridView.ItemsSource=CollectionViewSource,CollectionViewSource必须指向“集合集合”。您可能还需要设置CollectionViewSource.IsSourceGrouped=true。代码中唯一不同的地方是我在cs文件
GroupEditEmsViewRouce.Source=groups中使用了groups,其中groups是分组对象的列表。它不起作用:/I还包括了查看组中项目所需的
ItemsPath
。是的,我知道我已经尝试过了。但我想我现在走的是正确的道路。我已经用你和杰夫的建议从头开始了一切,我开始有所进展
<CollectionViewSource
    x:Name="groupedItemsViewSource"
    IsSourceGrouped="true"
    Source="{Binding GroupItems}" <!-- Property in the backing ViewModel -->
    ItemsPath="Items" <!-- Property on the MyGroupObject class -->
/>