Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP-FlipView-需要FlipView仅加载单个项目内容_C#_Xaml_Uwp_Flipview - Fatal编程技术网

C# UWP-FlipView-需要FlipView仅加载单个项目内容

C# UWP-FlipView-需要FlipView仅加载单个项目内容,c#,xaml,uwp,flipview,C#,Xaml,Uwp,Flipview,上周,我一直在努力在类似Microsoft News UWP的应用程序中实现FlipView 我尝试了以下方法:使用项目模板的FlipView和使用我的项目的ObservableCollection。 然而,这导致我的ObservableCollection中的所有项目都被预加载,这不是我想要的 是否有人得到任何提示,允许我将FlipView的这种行为更改为:仅加载第一个项目,然后单击箭头时,加载下一个项目 提前感谢:) 更新: 我可以证实,这种行为正如吴荪婷(Sunteen Wu-MSFT)所

上周,我一直在努力在类似Microsoft News UWP的应用程序中实现FlipView

我尝试了以下方法:使用项目模板的FlipView和使用我的项目的ObservableCollection。 然而,这导致我的ObservableCollection中的所有项目都被预加载,这不是我想要的

是否有人得到任何提示,允许我将FlipView的这种行为更改为:仅加载第一个项目,然后单击箭头时,加载下一个项目

提前感谢:)

更新: 我可以证实,这种行为正如吴荪婷(Sunteen Wu-MSFT)所说的那样。 我还尝试使用与马丁·齐克蒙德(Martin Zikmund)在演示中使用的类似逻辑,但是,它没有清除前面的项目

我的目标是一次加载一个项目。这样的行为:
1) 我看到1项
2) 如果单击(下一步)箭头:
*此项目将从flipview中卸载
*下一项已加载
3) 如果我单击 然而,这导致我的ObservableCollection中的所有项目都被预加载

控件的
ItemsPanelTemplate
包含。因此,
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 Zikmund为单次加载提供的

此外,根据FlipView的备注:

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


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

你好,孙吴,很好的解释。检查VirtualzingStackPanel时,如您所说,共有3项。我将研究@Martin Zikmund的演示,这似乎是我想要的。谢谢在使用了@Martin Zikmund(为我自己定制)的演示中的类似逻辑后,它仍然将以前的项目保留在缓存中,导致了一种奇怪的行为。以前的项目保存在缓存中。我想我会尝试使用轴而不是FlipView,然后再回来找你。谢谢你的帮助。你为什么要担心它装载三件物品?这是一件好事。它为您的用户提供了最佳性能和最佳内存使用率