Xamarin - 如何从两个类获取列表视图源数据

本文关键字:获取 两个 列表 视图 数据 Xamarin | 更新日期: 2023-09-27 18:35:27

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

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

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

有什么办法可以做到这一点吗?

或者,我制作了一个自定义单元格类型,StudentCell .有没有办法从自定义模板中指定绑定到另一个类(不是学生)?

Xamarin - 如何从两个类获取列表视图源数据

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

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

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

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

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

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