为UWP循环FlipView

时间:2015-11-10 14:05:44

标签: .net xaml win-universal-app uwp

有没有办法让物品通过FlipView循环?从最后一项到第一项,反之亦然。我见过这个解决方案http://blogs.msdn.com/b/synergist/archive/2013/09/21/windows-8-flipview-looping-sample.aspx

它适用于W8,好的,但在Windows通用平台(通用应用程序)下会抛出相同的代码。

2 个答案:

答案 0 :(得分:2)

您提到的解决方案是对的,您可以参考此解决方案来实现您自己的解决方案。

但是文章中链接的示例不起作用,因为存在一个小错误。在 MainPage.xaml 中,它使用以下代码来使用附加属性

Comparable<String>

但命名空间前缀“Synergist”是错误的,它应该是“增效剂”,因为它被定义为<FlipView x:Name="FlipView" Synergist:FlipViewExtensions.IsLooping="True"> 。所以只需将“增效剂”改为“增效剂”:

xmlns:synergist="using:Synergist"

样本效果很好。

如果您在UWP中使用这些代码,它将在<FlipView x:Name="FlipView" synergist:FlipViewExtensions.IsLooping="True"> 处抛出异常。

  

WinRT信息:在进行其他修改时无法完成集合修改。

     

System.Runtime.InteropServices.COMException(0x8000FFFF):灾难性故障

     

在进行其他修改时无法完成收藏修改。

     
      
  • at Windows.UI.Xaml.Controls.ItemsControl.put_ItemsSource(Object value)
  •   
  • 在Synergist.FlipViewExtensions.Initialize(FlipView flipView)
  •   

虽然很难说出这里有什么问题,但我们可以在为flipView.ItemsSource = loopingList;分配或添加项目之后在代码隐藏中设置IsLooping附加属性以避免此异常。例如:

FlipView.ItemsSource

请在Github上查看我的已完成样本。

答案 1 :(得分:2)

很难让FlipView循环并在UWP中保持良好的体验。

我使用compostion api实现了CarouselView来解决问题。在Github中查看。 CarouselView有几个功能:

  • 支持无限的砍伐。
  • 显示屏幕宽度较大时的邻居图像。

它很容易使用,就像下面的代码一样。

<carousel:CarouselView x:Name="carousel" ItemWidth="500"
          xmlns:carousel="using:CarouselView.Controls"/>

然后在代码后面设置ItemImageSource(一个List<string>依赖项属性)或使用绑定

carousel.ItemImageSource = new List<string>()
{
    "https://img1.doubanio.com/view/photo/photo/public/p1204310498.jpg",
    "https://img1.doubanio.com/view/photo/photo/public/p1547743259.jpg",
    "https://img1.doubanio.com/view/photo/photo/public/p2183422782.jpg",
    "https://img1.doubanio.com/view/photo/photo/public/p832662844.jpg",
    "https://img1.doubanio.com/view/photo/photo/public/p752907403.jpg"
};

您可以在我的Github

中查看更多详细信息并查看示例