【问题标题】:ListView with headers (LongListSelector) for Xamarin.Forms用于 Xamarin.Forms 的带有标头 (LongListSelector) 的 ListView
【发布时间】:2015-02-07 12:47:12
【问题描述】:

我正在 Windows Phone 上寻找一个名为 LongListSelector 的视图。这是一个带有组标题的列表视图。点击组标题仅显示组列表。在组列表上点击一个组可隐藏组列表并将视图滚动到所选组。这是对长列表进行分组的一种非常有用的方法,可以在组之间轻松导航。如果有适合相同目的的替代品,那也很棒。

【问题讨论】:

    标签: android ios xamarin xamarin.forms longlistselector


    【解决方案1】:

    你可以轻松做到这一点:)

    您需要做的第一件事是确保您的数据源是集合的集合。如果您想要最大的绑定优势,我建议您使用 ObservableCollection>。然后我们可以如下构造我们的listView:

    var listView = new ListView ();
    listView.SetBinding (ListView.ItemsSourceProperty, "Data");
    listView.ItemTemplate = new DataTemplate (typeof (MyCell));
    listView.GroupHeaderTemplate = new DataTemplate (typeof (MyHeaderCell));
    listView.IsGroupingEnabled = true;
    listView.GroupShortNameBinding = new Binding ("Title");
    

    按顺序,我们先绑定我们的数据,我假设这里的BindingContext会继承自页面。我们的数据应该是已经提到的集合的集合。

    然后我们像往常一样在ItemTemplate中绑定,我们制作一个GroupHeaderTemplate,这将是正常滚动时列表中显示的模板。接下来我们启用分组以告诉列表将数据用作分组集合而不是平面列表。

    最后,我们为 GroupShortName 提供了一个绑定。此绑定针对每个组的集合运行,以获取一个字符串(或将调用 ToString 的对象)以生成您在屏幕截图中显示的跳转列表。

    出于性能原因,您可能希望确保在设置其他所有内容之前不设置 ItemsSource,以避免 ListView 尝试实现处于部分配置状态的 Cells。这实际上不会导致错误,它只是迫使 ListView 做更多的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      相关资源
      最近更新 更多