上周我一直在努力尝试在Microsoft News UWP应用程序中实现FlipView。
我尝试了以下操作:带有ItemTemplate的FlipView和带有我的项目的ObservableCollection。 然而,这导致我的ObservableCollection中的所有项目都被预先加载,这不是我想要的。
有没有人有任何提示允许我更改FlipView的这种行为如下:只加载第一项,然后当我点击箭头时,下一项被加载。
提前致谢:)
更新 我可以确认行为是如 @Sunteen Wu - MSFT 所说的那样。 我还尝试使用与 @Martin Zikmund 的基金演示相似的逻辑,但是,它没有清除之前的项目
我的目标是一次加载1个单品。这样的行为:
1)我看到1项目
2)如果我点击> (下一个)箭头:
*此项目从flipview中卸下
*下一个项目已加载
3)如果我点击< (上一个)箭头:
*此项目从flipview中卸下
*重新加载上一个项目
希望有人可以提供帮助,我真的想将这个功能提供给我的用户^^。
答案 0 :(得分:1)
然而,这导致我的ObservableCollection中的所有项目都被预先加载
FlipView
控制ItemsPanelTemplate
包含VirtualizingStackPanel
。因此FlipView
控件默认支持虚拟化。您可以在调试应用程序时检查可视树,无论绑定到FlipView
的项目有多少,您都可以在默认情况下仅加载三个FlipViewItem
。
所以在我看来,FlipView
不会预先加载ObservableCollection
的所有项目,默认情况下它可能会加载上一个项目,当前项目和下一个项目,除非您更改ItemPanel
到StackPanel
,它不支持虚拟化。
<FlipView x:Name="flipView1" Width="480" Height="270"
BorderBrush="Black" BorderThickness="1">
<FlipView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</FlipView.ItemsPanel>
<FlipView.ItemTemplate>
...
</FlipView.ItemTemplate>
</FlipView>
仅加载第一个项目,然后当我单击箭头时,下一个项目将被加载。
正如FlipView
使用虚拟化所以我猜你还不需要这个功能。如果您仍然需要它,您可以尝试将源绑定到FlipView
,实例数据为空,并且每次选择更改时,强制手动加载内容。为此,您可以参考similar thread @Martin Zikmund为单次加载提供demo。
此外,根据FlipView的Do's and don'ts评论:
避免对较大的集合使用翻转视图控件,因为翻阅每个项目的重复动作可能很乏味。
如果你有更大的绑定集合,请避免使用翻转视图,但要考虑列表视图或网格视图。