在windows phone的flipview中重复使用视图

本文关键字:视图 windows phone flipview | 更新日期: 2023-09-27 18:21:04

我有一个用户控件FooUserControl,它在BarObject上有一个DataContext绑定。此BarObject是在运行时从另一个对象FooBarObject创建的。使用FlipView,我可以做一些类似的事情

<DataTemplate>
    .....
</DataTemplate>
<FlipView  ItemsSource="{Binding BarObjectList}" ItemTemplate="{StaticResource FooUserControl}">
</FlipView>

现在,根据我的理解,如果BarObjectList中有100个项,这将创建100个FooUserControl实例,并将BarObject分配给每个实例作为它们的DataContext

在我看来,这是非常低效的,因为现在我有100个物体漂浮在周围。100也可以是1000。我有两个问题

  1. 有更好的方法吗?理想情况下,我想要1个或最多3个对象(1。先前,2。电流和3。next)存在,并且在每次滚动时仅在用户控件上重新分配数据上下文。有办法做到这一点吗?如果答案是这样的话,我该如何使用DataTemplateSelector
  2. 我知道翻转视图对于1000个对象来说不是最好的。最好有一个列表视图的建议。还有其他建议吗

在windows phone的flipview中重复使用视图

如果你想做Previous、Current、Next的事情,那么你最多需要将它数据绑定到整个数据集的一个子集。因此,您需要跟踪您在该数据集中的位置,并返回一个仅包含3项的列表。然后,您需要知道何时更改此索引值,您可能可以使用所述UI元素中的SelectionChanged事件进行一些巧妙的计算。

当您想要显示大量的数据项集合时,ListView可能是您的最佳选择。当你在列表的底部时,有很多教程可以加载额外的项目,这样你就不必一次加载整个数据集。

但说真的,我认为你需要重新思考如何向用户显示数据。很少会出现希望用户向下滚动1000+个元素的情况。数据源中应该有一些筛选。

查看<ColletionViewSource>,了解筛选数据集的简单方法。

ColletionViewSource MSDN链接

相关文章: