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

时间:2019-04-18 10:56:44

标签: c# xaml xamarin xamarin.forms

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

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

这是我的父级模型班:

public class Parent
{

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

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

}

儿童班:

public class Child
{
    public string ChildName{ get; set; }
 }

ViewModel:

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

在“我的列表”中,我获得了一个“父”对象列表,每个对象都包含ID,名称和“ ChildList”对象,该对象也是一个包含ChildName的列表(多个ChildList对象)

在项目源为“ MyList”的列表视图中,我希望“名称”作为包含“ ChildList”(多个“ ChildName”的标题)的标题

类似:

Name1


-ChildName1

-ChildName2

-ChildName3

Name2


-ChildName1

-ChildName2

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

1 个答案:

答案 0 :(得分:0)

我认为您可能需要重新审视您的设计。如果我个人试图做一些类似我了解您正在尝试做的事情,那么我将处理这两种方法之一。

第一种方式,我将从父母的列表视图开始。然后,我将处理clicked / tap事件(取决于您要开发的平台),以便在主页上打开第二个较小的listview,显示被单击/ tap的父级的子级。在子列表视图以外的其他任何地方单击/轻击都会将其丢弃。

我想到的第二种方法是简单地将父级添加到列表视图,然后添加所有子级。列出以下内容:

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

第二种选择的缺点是,您可能需要创建不同的单元格设计,以使其易于区分父母和孩子,并且每次您想从列表视图中读取信息时,都需要尝试强制转换以查看其内容。被选中。