Xamarin - 如何从两个类中获取ListView源数据?

时间:2016-02-20 16:31:18

标签: c# listview data-binding xamarin xamarin.forms

我在ListView应用程序中有一个Xamarin Xamarin.Form。它初始化如下:

ListView listView = new ListView
        {
            HasUnevenRows = true,
            ItemTemplate = new DataTemplate(typeof(StudentCell)),
            ItemsSource = register.StudentList,
            SeparatorColor = Color.FromHex("#ddd")
        };
        listView.ItemSelected += OnSelection;

我似乎无法在网上找到关于如何/如果我可以制作ItemsSource两个单独课程的内容。我有一个学生列表,其中包含姓名和状态等数据,但需要为学生列表中的每个项目加载另一个班级的图像。

有没有办法做到这一点?

或者,我已经制作了自定义单元格类型StudentCell。有没有办法在自定义模板中指定与另一个类(不是学生)的绑定?

2 个答案:

答案 0 :(得分:2)

考虑的一种可能性是,register.StudentList,假设它的类型为Student,如果您无法在该类中包含StudentImage属性,那么可能会派生出一个新类,说StudentWithImage继承自Student,因此它将具有相同的属性。

然后,您可以将StudentImage属性添加到继承自Student的新类。

在返回的结果集上,您可以枚举它的所有实例,并通过对其他类执行查找将StudentImage属性设置为适当的值。

然后,您只需将StudentWithImage列表绑定到Xamarin.Forms List,然后使用单个数据源即可。

答案 1 :(得分:2)

这是MVVM模式中的VM(ViewModel)。它允许View(ListView)通过创建一个组合来自多个源的数据的ViewModel类来显示来自多个模型(学生和图像)的数据。

在您的情况下,您可以创建一个同时包含学生和图像的StudentViewModel类。然后,您将ListView绑定到ViewModel类。