我有一个用户控件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.我有两个问题
答案 0 :(得分:0)
如果你想做上一个,当前的,接下来的事情,那么你最好需要将它数据绑定到整个数据集的一个子集。因此,您需要跟踪您在该数据集中的位置,并返回仅包含3个项目的列表。然后你需要知道何时更改这个索引值,你可以使用所述UI元素中的SelectionChanged事件进行一些聪明的数学运算。
当您想要显示大量数据项时,ListView可能是您最好的选择。当您位于列表底部时,还有许多教程可以加载额外的项目,因此您不必一次加载整个数据集。
但严肃地说,我认为您需要重新考虑如何向用户显示数据。应该很少出现您希望用户缩减1000多个元素的情况。您的数据源中应该有一些过滤。
查看<ColletionViewSource>
,了解过滤数据集的简便方法。