如何在Xamarin.Forms中绑定ListView中的列表

我的页面上有一个ListView, ItemSourceList ,如下所示:

 public class AssetModel { public string AssetId { get; set; } public string Description { get; set; } public List TaskDetailList { get; set; } } public class TaskDetail { public string Description { get; set; } } 

如何在父列表中绑定TaskDetail列表?

期望的布局:

在此处输入图像描述

它似乎是一个经典的分组listview用例。 詹姆斯·蒙特马尼奥(James Montemagno)写了一篇关于这种需求的文章应该对你有很大帮助 。

总之,分组function需要“列表列表”类型的对象( IEnumerable> ),其中每个“主项目”是“详细项目”的列表。

为方便起见,您可以使用上述文章中提供的类:

 public class Grouping : ObservableCollection { public K Key { get; private set; } public Grouping(K key, IEnumerable items) { Key = key; foreach (var item in items) this.Items.Add(item); } } 

然后,list属性必须将其类型更改为,例如:

 ObservableCollection> AssetsList { get; set; } = new ObservableCollection>(); 

这个AssetsList是你应该绑定到ListViewItemsSource

要填写此属性,您需要执行以下操作:

 for (int i = 0; i < 5; i++) { var asset = new AssetModel(); asset.AssetId = new Guid().ToString(); asset.Description = $"Asset { i + 1} "; asset.TaskDetailList = new List(); for (int j = 0; j < 3; j++) asset.TaskDetailList.Add(new TaskDetail() { Description = $"Detail { (i + 1) } - { (j + 1) }" }); var group = new Grouping(asset, asset.TaskDetailList); AssetsList.Add(group); } 

然后在您的XAML中定义ListView分组属性: