我想在items
内绑定list
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>
但是我的列表视图总是显示空的,你们能帮我一把吗?
答案 0 :(得分:0)
要将Disciplines列表显示为文本列表,可以在第一个List视图中使用ListView作为数据模板,并将Disciplines绑定到该模板List View。 你可以尝试:
<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>
答案 1 :(得分:0)
我会发布我的解决方法,如果有人遇到麻烦但如果有人知道更好的解决方案可以发布
我已经单独上课了
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);