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

Xamarin - how to get ListView source data from two classes?

我在 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 分为两个 class 的信息。我有一个包含姓名和状态等数据的学生列表,但需要从另一个 class 为学生列表中的每个项目加载图像。

有什么办法吗?

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

要考虑的一种可能性是,从 register.StudentList 开始,假设其类型为 Student,如果您不能在其中包含 StudentImage 属性 class,然后可能派生一个新的 class,比如说 StudentWithImage 继承自 Student,因此它将具有相同的属性。

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

在返回的结果集中,您可以枚举它的所有实例,并通过对另一个 class 执行查找将 StudentImage 属性 设置为适当的值.

然后您可以将 StudentWithImage 的列表绑定到您的 Xamarin.Forms List 并使用单个数据源。

这就是MVVM模式中的VM(ViewModel)的用途。它允许您的视图 (ListView) 通过创建一个合并来自多个来源的数据的 ViewModel class 来显示来自多个模型(Student 和 Image)的数据。

在您的情况下,您可以创建一个包含 Student 和 Image 的 StudentViewModel class。然后你将你的 ListView 绑定到 ViewModel class.