如何在XAML捕捉滚动查看器

时间:2015-12-23 20:09:55

标签: c# xaml windows-8.1 scrollviewer

我正在使用适用于Windows 8.1 / 10的C#XAML应用程序,而且我无法创建符合我想要的滚动查看器。

我非常想在Windows10上的Windows应用商店应用中的默认页面上使用顶部滚动条。屏幕很小时看起来像这样:

Store Scroller

它横向滚动项目,在它们之间进行捕捉,并且不是通过滚动条操作,而是通过滚动侧面的按钮来操作。它还在底部有页面标记,并循环内容。理想情况下,在我的鼠标上也可以使用滚轮进行操作。

我想要的UI是:

Icon Scroller

此控件的目的是循环显示图标的可用选项,在任何给定时间显示正好三个;图像是可选择的。我总共有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个像素,模拟流动的运动。我不认为在页面之间捕捉是可能的。

如果滚动查看器的样式只是从默认滚动条中获得箭头按钮,而它们之间没有实际的条形,那将很简单。这是否存在?

感谢任何帮助。

0 个答案:

没有答案