我正在使用适用于Windows 8.1 / 10的C#XAML应用程序,而且我无法创建符合我想要的滚动查看器。
我非常想在Windows10上的Windows应用商店应用中的默认页面上使用顶部滚动条。屏幕很小时看起来像这样:
它横向滚动项目,在它们之间进行捕捉,并且不是通过滚动条操作,而是通过滚动侧面的按钮来操作。它还在底部有页面标记,并循环内容。理想情况下,在我的鼠标上也可以使用滚轮进行操作。
我想要的UI是:
此控件的目的是循环显示图标的可用选项,在任何给定时间显示正好三个;图像是可选择的。我总共有9个图标,所以我需要3"页面"在这个滚动查看器中。我通过使用带有stackpanel的scrollpanel实现了这一点,其中堆栈面本身包含其他三个堆栈面板,用于我的"页面"。 scrollviewer设置为在项目之间进行捕捉,效果很好。我创建的示例代码如下:
<ScrollViewer x:Name="scroller" HorizontalScrollBarVisibility="Hidden" VerticalScrollMode="Disabled" VerticalScrollBarVisibility="Disabled" HorizontalSnapPointsType="Mandatory" Width="120">
<StackPanel x:Name="stack_Master" Orientation="Horizontal" Height="40">
<StackPanel x:Name="stack_Page1" Orientation="Horizontal">
<Image x:Name="image_Page1_Icon1" Style="..." Source="..." Width="40"/>
<Image x:Name="image_Page1_Icon2" Style="..." Source="..." Width="40"/>
<Image x:Name="image_Page1_Icon3" Style="..." Source="..." Width="40"/>
</StackPanel>
<StackPanel x:Name="stack_Page2" Orientation="Horizontal">
<Image x:Name="image_Page2_Icon1" Style="..." Source="..." Width="40"/>
<Image x:Name="image_Page2_Icon2" Style="..." Source="..." Width="40"/>
<Image x:Name="image_Page2_Icon3" Style="..." Source="..." Width="40"/>
</StackPanel>
<StackPanel x:Name="stack_Page3" Orientation="Horizontal">
<Image x:Name="image_Page3_Icon1" Style="..." Source="..." Width="40"/>
<Image x:Name="image_Page3_Icon2" Style="..." Source="..." Width="40"/>
<Image x:Name="image_Page3_Icon3" Style="..." Source="..." Width="40"/>
</StackPanel>
</StackPanel>
</ScrollViewer>
使用鼠标滚轮时,页面可以很好地滚动动画。页面指示器应该很容易使用一些C#来实现。循环的计划是让#34;诱饵&#34;分别在stack_Master的开头和结尾处的Page3和Page1的版本。然后,一旦动画完成以编程方式更改为没有动画的实际页面。这会模仿圆形卷轴。
我遇到的问题是如何实现滚动按钮?我没有在MSDN上看到滚动查看器的任何方法,它们会在保持平滑动画的同时改变滚动查看器的位置,而只是突然立即改变位置的方法。如果存在这样的方法,那么我可以将它绑定到滚动查看器侧面的某些按钮。
如果这种方法不存在,我也看到了没有启用捕捉时的解决方案。基本上按钮会使滚动条每50ms移动10个像素,模拟流动的运动。我不认为在页面之间捕捉是可能的。
如果滚动查看器的样式只是从默认滚动条中获得箭头按钮,而它们之间没有实际的条形,那将很简单。这是否存在?
感谢任何帮助。