【问题标题】:Xamarin - how to get ListView source data from two classes?Xamarin - 如何从两个类中获取 ListView 源数据?
【发布时间】:2016-02-20 16:31:17
【问题描述】:

我在 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。有没有办法从自定义模板中指定与另一个班级(不是学生)的绑定?

【问题讨论】:

  • 您不能将 StudentImage 之类的属性添加到从 register.StudentList 返回的项目中吗?
  • @Pete 我认为这在 C# 中是不可能的。我进行了搜索,似乎ExpandoObject 可以做到这一点?我会尝试一下,看看会发生什么。

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


【解决方案1】:

要考虑的一种可能性是,从register.StudentList,假设它的类型为Student,如果您不能在该类中包含StudentImage 属性,那么可能派生一个新类,例如@987654324 @ 继承自 Student,因此它具有相同的属性。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      相关资源
      最近更新 更多