![](/img/trans.png)
[英]Data Binding to a list of objects within a List of objects within a list of objects in xaml
[英]Data Binding List within a List
我想将list
的items
绑定到list
。
我的三个模型:
public class Course
{
public int Id { get; set; }
public string Title { get; set; }
public List<Module> Modules { get; set; }
}
public class Module
{
public int Id { get; set; }
public string Title { get; set; }
public List<Discipline> Disciplines { get; set; }
}
public class Discipline
{
public int Id { get; set; }
public string Title { get; set; }
}
我有一个包含课程列表的页面,并将数据传递到该课程的另一页面以查看一些详细信息,在该详细信息页面上,我将BindingContext
设置为BindingContext = _course.Module
在_course
我获得了单击的课程数据。
我的询问是,现在我想显示按模块分组的学科列表
我已经尝试过类似的方法:
<ListView ItemsSource="{Binding .}">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Disciplines}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
要么:
<ListView ItemsSource="{Binding Disciplines}">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Title}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但是我的列表视图总是显示为空,你们可以帮我一下吗?
要将“学科列表”显示为文本列表,可以在第一个“列表”视图中使用ListView作为数据模板,并将“学科”绑定到该模板“列表视图”。 你可以试试 :
<ListView ItemsSource="{Binding}"> <ListView.ItemTemplate> <DataTemplate> <ListView ItemsSource="{Binding Disciplines}"> <ListView.ItemTemplate> <DataTemplate> <TextCell Text="{Binding Title}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </DataTemplate> </ListView.ItemTemplate> </ListView>
我会发布我的解决方法,以了解是否有人对此有问题,但是如果有人知道更好的解决方案可以发布它
我已经单独上课了
public class GroupedDisciplines : ObservableCollection<Disciplines>
{
public string Title { get; set; }
public static ObservableCollection<GroupedDisciplines> CreateGroup (ObservableCollection<Module> module)
{
var group = new GroupedDisciplines();
var colection = new ObservableCollection<GroupedDisciplines>();
foreach (Module m in module)
{
group = new GroupedDisciplines() { Title = m.Title };
foreach (Discipline d in module.SelectMany(x => x.Disciplines))
{
group.Add(d);
}
colection.Add(group);
}
return colection;
}
}
在视图上,我将BindingContext(或x:Name.ItemsSource)设置为
listView.ItemsSource = GroupedDisciplines.CriarGrupo(_modules);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.