Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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#中有一个列表,我想使用listview分组在xaml中绑定该列表_C#_Xaml_Xamarin_Xamarin.forms - Fatal编程技术网

我在C#中有一个列表,我想使用listview分组在xaml中绑定该列表

我在C#中有一个列表,我想使用listview分组在xaml中绑定该列表,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,需要帮助绑定xaml中的列表列表 我已经尝试使用嵌套的Listview实现同样的功能,但这会使我的应用程序在滚动时崩溃。我猜这不是个好主意 这是我的父模型类: public class Parent { public string Id { get; set; } public string Name { get; set; } public List<Child> ChildList { get; set; } } 视图模型: public Obse

需要帮助绑定xaml中的列表列表

我已经尝试使用嵌套的Listview实现同样的功能,但这会使我的应用程序在滚动时崩溃。我猜这不是个好主意

这是我的父模型类:

public class Parent
{

    public string Id { get; set; }
    public string Name { get; set; }

    public List<Child> ChildList { get; set; }

}
视图模型:

public ObservableCollection< Parent > MyList = new ObservableCollection< Parent >();

使用listview分组可以实现同样的效果吗?如果是这样,请有人帮助我实现,因为我无法正确分组数据。

我认为您可能需要重新审视您的设计。如果我个人想做一些事情,比如我理解你想做的事情,我会用这两种方法中的一种来处理

第一种方式,我将从父母的列表视图开始。然后,我将处理单击/点击事件(取决于您选择的平台),在主页上打开第二个较小的listview,显示单击/点击的父级的子级。单击/点击屏幕上除子listview之外的任何位置都可以将其放在一边

我可以想到的第二种方法是简单地向listview添加一个父级,然后添加它的所有子级。请列出以下内容:

void FillParentListView(List<Parent> parents)
{
    foreach(Parent p in parents)
    {
        listview.Items.Add(p);
        foreach(Child c in p.ChildList)
            listview.Items.Add(c);
    }
}
void FillParentListView(列出父对象)
{
foreach(父级中的父级p)
{
listview.Items.Add(p);
foreach(p.ChildList中的子c)
listview.Items.Add(c);
}
}

第二个选项的缺点是,您可能需要创建不同的单元格设计,以便于区分父项和子项,并且您需要在每次从listview读取信息时尝试强制转换,以查看所选内容。

listview本机支持分组。请看一下。我猜你每天都会学到新东西。
Name1


-ChildName1

-ChildName2

-ChildName3

Name2


-ChildName1

-ChildName2
void FillParentListView(List<Parent> parents)
{
    foreach(Parent p in parents)
    {
        listview.Items.Add(p);
        foreach(Child c in p.ChildList)
            listview.Items.Add(c);
    }
}