【问题标题】:ObservableCollection updation is doesn't affect in custom list view?ObservableCollection 更新不影响自定义列表视图?
【发布时间】:2019-09-18 09:28:10
【问题描述】:

我有一个带有水平滚动的自定义列表视图,我通过视图模型绑定将数据绑定到列表视图。但是在运行时,当可观察集合发生变化时,列表视图不会更新。我尝试使用运行良好但自定义列表视图不起作用的 xamarin 表单列表视图。

我在此链接的帮助下实现了自定义列表视图:- Xamarin, Is there any way a listview can be used horizontally?

【问题讨论】:

  • 您为水平 ListView 链接的代码实际上是一个 ScrollView,因此它并非旨在侦听任何数据更改。如果你想要这种行为,你必须自己实现,任何 ObservableCollection 数据上的事件订阅都会改变
  • 有代码或示例解决方案吗?
  • 好吧,既然 Xamarin.Forms 是开源的,我建议你去看看他们存储库中的 ListView 源代码
  • CollectionView 支持水平方向和数据绑定

标签: c# xamarin.forms data-binding


【解决方案1】:

如果你想让列表水平滚动,你可以在表单中使用CollectionView

<CollectionView ItemsSource="{Binding xxx}">
    <CollectionView.ItemsLayout>
        <ListItemsLayout Orientation="Horizontal" />
    </CollectionView.ItemsLayout>

     <CollectionView.ItemTemplate>
        <DataTemplate>

          //...
        </DataTemplate>
    </CollectionView.ItemTemplate>

</CollectionView>

在调用 Forms.Init 之前,不要忘记将以下代码行添加到 iOS 上的 AppDelegate 类或 Android 上的 MainActivity 类中:

Forms.SetFlags("CollectionView_Experimental");

【讨论】:

  • 实际上正在使用旧版本的 xamarin forms version 3 。该版本的集合视图不可用,如果我更新该版本,我的项目可能会崩溃,因此我无法更新它。
  • nuget中是否有这样的插件可以实现。
猜你喜欢
  • 2011-10-28
  • 2016-04-16
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多