UWP - FlipView - 需要FlipView才能加载单个项目内容

时间:2017-01-29 23:48:17

标签: c# xaml uwp flipview

上周我一直在努力尝试在Microsoft News UWP应用程序中实现FlipView。

我尝试了以下操作:带有ItemTemplate的FlipView和带有我的项目的ObservableCollection。 然而,这导致我的ObservableCollection中的所有项目都被预先加载,这不是我想要的。

有没有人有任何提示允许我更改FlipView的这种行为如下:只加载第一项,然后当我点击箭头时,下一项被加载。

提前致谢:)

更新 我可以确认行为是如 @Sunteen Wu - MSFT 所说的那样。 我还尝试使用与 @Martin Zikmund 的基金演示相似的逻辑,但是,它没有清除之前的项目

我的目标是一次加载1个单品。这样的行为:
1)我看到1项目
2)如果我点击> (下一个)箭头:
*此项目从flipview中卸下 *下一个项目已加载
3)如果我点击< (上一个)箭头:
*此项目从flipview中卸下 *重新加载上一个项目

希望有人可以提供帮助,我真的想将这个功能提供给我的用户^^。

1 个答案:

答案 0 :(得分:1)

  

然而,这导致我的ObservableCollection中的所有项目都被预先加载

FlipView控制ItemsPanelTemplate包含VirtualizingStackPanel。因此FlipView控件默认支持虚拟化。您可以在调试应用程序时检查可视树,无论绑定到FlipView的项目有多少,您都可以在默认情况下仅加载三个FlipViewItem

enter image description here

所以在我看来,FlipView不会预先加载ObservableCollection的所有项目,默认情况下它可能会加载上一个项目,当前项目和下一个项目,除非您更改ItemPanelStackPanel,它不支持虚拟化。

 <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评论:

  

避免对较大的集合使用翻转视图控件,因为翻阅每个项目的重复动作可能很乏味。

如果你有更大的绑定集合,请避免使用翻转视图,但要考虑列表视图或网格视图。