我有一个UI实现挑战(至少对我而言)。 需要的是3个窗格的滚动视图,它们无休止地循环:当用户从pane2向右滑动到pane3时,它们应该能够继续向右滚动到pane1并在窗格上滚动,无休止地重复。 一次只显示一个完整的窗格 - 没有悬挂边缘。

像这样的东西: 3窗格全景

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

我们当前的实现只在pane1和pane3之间来回滚动(符合上一个要求),遵循MSDN WinRT控件示例:

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

这样可以正常工作,因为我们有触摸体验,内容跟随用户的手指,并在滚动时可见。

我到目前为止的想法是:

  • 在'start'和'end'上添加另一个网格
  • 在滚动时计算出水平偏移
  • 在面板中途,将“最后”窗格内容复制/插入“下一个”窗格

但我不知道这是否有效,总体而言我不知道如何去做。 我们正在寻找一些非常简单的东西,以便了解可用性测试,但它必须真正适用于C#/ XAML(Windows应用商店应用)。 所以我要求更聪明的人提出建议。

===============>>#1 票数:1

您不应该使用ScrollViewer因为它不循环并且具有滚动条或指示器,用于在可滚动内容中显示您的视口位置。 FlipView可以更好地工作,但它也不支持循环。 我建议的解决方案是从头开始简单地实现它。 将所有面板放在与面板大小相同的Canvas ,并处理面板中的ManipulationDelta事件(您需要为它们提供至少一个Transparent Background以进行成功的命中测试, ManipulationMode="TranslateX,TranslateInertia" )并调用Canvas.SetLeft(panel)在面板上通过e.Delta.Translation.X从事件参数中更新他们的位置。 如果位置低于-panel.ActualWidth添加3 * panel.ActualWidth ,如果超过 - 减去该数量。 如果您决定在e.PointerDeviceType == PointerDeviceType.Mouse过滤掉操作事件,请务必添加按钮以启用用鼠标翻转项目,如FlipView控件中所示,尽管我个人更喜欢保持鼠标拖动操作。

===============>>#2 票数:0 已采纳

检查: 为ItemsControl创建自定义ItemsPanel

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

  ask by dex3703 translate from so

未解决问题?本站智能推荐:

2回复

在Metro应用程序的设置窗格中删除项目

我正在使用C#和XAML开发Metro应用程序,在我的应用程序中,我有两个视图View1和View2,对于View1,我需要具有一个带有“ Options,About,Logout”作为设置选项的设置窗格,对于View2,我需要删除那些设置,那么如何从设置超级按钮中删除设置选项,如果有人对此有所了解
1回复

ScrollViewer不会滚动

我想有一个接口与3个组件紧挨着另一个。 第一个是ListView,另外两个是Grids。 由于组件将在右侧溢出,我想将它们放在ScrollViewer中。 我没有成功。 我试着做一个非常简单的例子来试试,但即便是这个例子也失败了。 如您所见,ScrollViewer位于网格内
1回复

关于应用程序设计Winrt XAML的建议

我第一次研究winrt / xaml / html5开发,因此所有通用指针都深表感谢。 我很欣赏这是一个非常开放的问题,基本上是一个思想失误,但是欢迎所有意见。 我被要求研究开发一种问卷类型的应用程序,以取代当前基于纸张的问卷。 应用程序将在可能/可能没有在线/ WiFi访问的win8
3回复

如何在XAML Metro应用程序中禁用网格(面板)?

我想在XAML Metro App中模拟模式对话框。 所以我要在所有控件上设置.IsEnabled = false,而不是将其设置为模式对话框的控件。 显然IsEnabled不在Grid中,不在Panel中,不在FrameworkElement中。 如何禁用它而不使用户控制它呢?
2回复

在项目之间滚动FlipView Windows 8

我想制作一个flipview,它允许使用鼠标滚动在项目之间滚动。 可能吗? 我也想知道在哪里可以找到默认的Flipview样式。 (我正在使用C#/ XAML) 谢谢。
1回复

XAML水平Stackpanel滚动

我在滚动浏览器中滚动水平堆栈面板时遇到问题。 我正在尝试做的比我的例子更复杂,但在删除变量之后,我想如果我能解决这个问题,我可以解决所有问题。 基本上,当包含水平堆栈面板时,我无法让滚动查看器水平滚动。 以下是XAML示例: 奇怪的是,如果我只是将方向从水平交换到垂直,它滚
1回复

将ContentThemeTransition应用于可滚动的TextBlock

我正在尝试创建一个TextBlock,当其值更改时(从左侧滑入),它会过渡其内容。 问题在于,每当用户滚动TextBlock(包装在ScrollViewer中)时,都会重播过渡。 我是在做错什么,还是WinRT错误?
1回复

如何创建可变大小的组面板以适合Windows 8 XAML中的项目

我遇到的问题是分组网格视图将其所有组的大小调整为第一组的大小,如下面的屏幕截图所示: 我需要这些团体有不同的宽度来容纳他们的孩子。 在这种情况下,第二组应该更宽,第三组应该更窄。 我写的测试应用程序的代码如下: XAML(MainPage.xaml) 代码背后(M
3回复

在Windows 8网格中处理滑动客户端

我正在尝试实现一个自定义控件,它包含一个带有一些画布元素作为子元素的网格,当在网格上进行滑动操作时,我打算用canvas元素执行一些操作。 我无法处理网格的滑动,我已经在msdn - win8 Dev论坛中发布了相同的内容
1回复

无限滚动Flipview在翻转时更新内容

我正在尝试实现日历样式(基于日期)的无限FlipView ,用户可以在其中进行触摸滚动。 我将FlipView的ItemTemplate与自定义的ObservableCollection绑定。 一切都很好地显示,并且我正在操纵ObservableCollection以提供所需的行为:更改所选