上周,我一直在努力尝试在Microsoft应用程序中实现一个FlipView。
我尝试了以下几种方法:带有ItemTemplate的ItemTemplate和带项目的ObservableCollection。然而,这导致了我的ObservableCollection中的所有项目都是预加载的,这不是我想要的。
是否有任何提示允许我将FlipView的行为更改为:只加载第一个项,然后单击箭头,下一个项将被加载。
(预先谢谢:)
更新:我可以确认这种行为是@Sunteen MSFT说的。我还尝试使用类似于@Martin Zikmund为演示提供资金的逻辑,但是它并没有清除之前的项目。
我的目标是一次加载一个项目。这样的行为:
( 1)我看到一项
2)如果单击> (next)箭头:
*从flipview卸载此项
*加载下一个项目
3)如果单击< (上一)箭头:
*从flipview卸载此项
*重新加载前一项。
希望有人能帮忙,我真的很想把这个功能给我的用户^^。
发布于 2017-01-30 09:32:34
但是,这导致了我的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,并且每次选择更改时,都强制手动加载内容。为此,您可以引用@Martin为单个加载提供一个相似螺纹的演示。
此外,根据做和不做对FlipView的评论:
避免对较大的集合使用翻转视图控件,因为翻转每一项的重复动作可能很乏味。
如果您有一个更大的绑定集合,请避免使用翻转视图,但要考虑列表视图或网格视图。
https://stackoverflow.com/questions/41927282
复制相似问题