Xaml 三窗格循环滚动面板--建议

Xaml 三窗格循环滚动面板--建议,xaml,windows-8,windows-runtime,Xaml,Windows 8,Windows Runtime,我有一个UI实现挑战(至少对我来说)。我们需要的是一个3个窗格的滚动视图,可以无限循环:当用户从第2窗格向右滑动到第3窗格时,他们应该能够一直滚动到第1窗格,并在窗格中不断重复。一次只显示一个完整的窗格,没有挂边 大概是这样的: 我发现的所有示例都非常详细,数据绑定和视图模型通常基于列表框/视图。我们不需要任何复杂的东西:我们的3个窗格不是动态的,总是有3个 我们当前的实现仅在pane1和pane3之间来回滚动(满足之前的要求),遵循MSDN WinRT控件示例: <ScrollView

我有一个UI实现挑战(至少对我来说)。我们需要的是一个3个窗格的滚动视图,可以无限循环:当用户从第2窗格向右滑动到第3窗格时,他们应该能够一直滚动到第1窗格,并在窗格中不断重复。一次只显示一个完整的窗格,没有挂边

大概是这样的:

我发现的所有示例都非常详细,数据绑定和视图模型通常基于列表框/视图。我们不需要任何复杂的东西:我们的3个窗格不是动态的,总是有3个

我们当前的实现仅在pane1和pane3之间来回滚动(满足之前的要求),遵循MSDN WinRT控件示例:

<ScrollViewer>
  <StackPanel>
    <Grid /> <!-- pane1 -->
    <Grid /> <!-- pane2 -->
    <Grid /> <!-- pane3 -->
  </StackPanel>
</ScrollViewer>

就目前而言,这很好,因为我们有触摸体验,内容跟随用户的手指,在用户滚动时可见

到目前为止,我的想法是:

  • 在“开始”和“结束”上添加另一个网格
  • 滚动时计算水平偏移量
  • 完成面板的一半后,将“最后一个”窗格内容复制/插入到“下一个”窗格中

但我不知道这是否会起作用,总的来说,我不知道该怎么做。我们正在寻找一些非常简单的东西,只是为了让大家明白这一点并进行可用性测试,但它必须在C#/XAML(一个Windows应用商店应用程序)中真正起作用。因此,我向更聪明的人征求建议

您不应该使用
ScrollViewer
,因为它不会循环,并且有滚动条或指示器,显示您在可滚动内容中的查看端口位置。
FlipView
会更好一些,但它也不支持循环。我建议的解决方案是从头开始实现它。将所有面板放置在与面板大小相同的
画布中,并处理面板中的
操纵delta
事件(您需要为它们提供至少一个
透明的
背景,以成功进行命中测试和
操纵模式=“TranslateX,TranslateInertia”
),然后调用
Canvas.SetLeft(小组)
在面板上,通过从事件参数获取的
e.Delta.Translation.X
更新其位置。如果位置位于
-panel.ActualWidth
下方,则添加
3*panel.ActualWidth
,如果位于上方,则减去该金额。如果决定过滤,请确保还添加按钮以启用鼠标翻转项目当
e.PointerDeviceType==PointerDeviceType.Mouse
FlipView
控件中所示时,退出操作事件,尽管我个人更喜欢保持鼠标拖动操作。

检查此项:


它描述创建两个项目spanel:第一个项目将生成一个包含所有项目的圆圈,第二个项目将生成一个无限循环列表。

您希望一次只显示一个项目,还是非显示面板的侧面在左右两侧显示一点?只有当前窗格完全显示。.si上没有前缘取消。触摸和查看内容滚动是必要的,因此FlipView不起作用。修改问题。谢谢-这看起来像是有更多开发技能的人可以开始。我们还需要为滚动添加捕捉点。