列表中的数据绑定列表

时间:2017-01-19 20:32:03

标签: c# wpf xamarin data-binding

我想在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>

但是我的列表视图总是显示空的,你们能帮我一把吗?

2 个答案:

答案 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);