gpt4 book ai didi

android - Xamarin.Forms 的带有 header 的 ListView (LongListSelector)

转载 作者:行者123 更新时间:2023-11-29 15:55:15 28 4
gpt4 key购买 nike

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

enter image description here

enter image description here

最佳答案

你可以很容易地做到这一点:)

您需要做的第一件事是确保您的数据源是集合的集合。如果您想要最大的绑定(bind)优势,我建议使用 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");

按顺序,我们首先绑定(bind)我们的数据,我假设这里的 BindingContext 将从页面继承。我们的数据应该是已经提到的集合的集合。

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

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

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

关于android - Xamarin.Forms 的带有 header 的 ListView (LongListSelector),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28382288/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com