UWP中的Horizo​​ntalSnapPointsType ScrollViewer UserControl未设置

时间:2016-11-30 19:38:29

标签: c# xaml user-controls uwp

我创建了一个包含ScrollViewer,StackPanel和两个按钮的UserControl。我已禁用水平滚动条,并希望使用按钮滚动。但是当我在控件内部设置Horizo​​ntalSnapPointsType时它不起作用。如果我将ScrollViewer直接添加到我的主xaml中,则会设置该属性。其他属性如Horizo​​ntalScrollBarVisibility和Horizo​​ntalScrollMode设置正确,所以我不确定问题是什么。我已经在下面包含了xaml。

<UserControl
x:Class="TestApp.Controls.CarouselScrollViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestApp.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">

<Grid>
    <ScrollViewer x:Name="ScrollViewer"
            HorizontalScrollBarVisibility="Hidden" 
            HorizontalScrollMode="Disabled"
            VerticalScrollBarVisibility="Hidden"
            VerticalScrollMode="Disabled"
            HorizontalSnapPointsType="Mandatory">
        <ContentPresenter x:Name="Content" Content="{x:Bind ScrollViewerContent}" />
    </ScrollViewer>
    <Button VerticalAlignment="Center" HorizontalAlignment="Left" Content="LEFT" Background="White" Click="LeftButton_OnClick" Name="BtnLeft"/>
    <Button VerticalAlignment="Center" HorizontalAlignment="Right" Content="RIGHT" Background="White" Click="RightButton_OnClick" Name="BtnRight"/>
</Grid>

然后是调用控件的xaml。

<Page
x:Class="TestApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestApp"
xmlns:controls="using:TestApp.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <controls:CarouselScrollViewer SegmentWidth="400">
        <controls:CarouselScrollViewer.ScrollViewerContent>
            <StackPanel Orientation="Horizontal">
                <Image Source="Assets/cole_anne.png" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
                <Image Source="Assets/icecream.JPG" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
                <Image Source="Assets/jibby_hotdog.png" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
                <Image Source="Assets/andy_courtney_norah.png" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
                <Image Source="Assets/boating.JPG" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
                <Image Source="Assets/dev.jpg" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
                <Image Source="Assets/moir_crab.jpg" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
                <Image Source="Assets/MoirJudLindsayIlgaboating.jpg" Height="300" Width="400" Stretch="UniformToFill" Margin="5" />
            </StackPanel>
        </controls:CarouselScrollViewer.ScrollViewerContent>
    </controls:CarouselScrollViewer>
</Grid>

1 个答案:

答案 0 :(得分:0)

ScrollViewer.HorizontalSnapPointsType property声明操纵行为如何对沿水平轴的捕捉点作出反应。正如在备注中声明的那样,此属性适用于平移操作:

  

对于平移动作,通常有自然停止的位置。捕捉点提供了一种指示这些地方的方式。然后,当用户滑动时,操作结果有利于使用SnapPointsType值表示的自然点使用行为。

更具体地说,此属性适用于触摸模式。参考&#34;平移行为&#34; Guidelines for panning的部分:

  

使用滑动手势进行平移会在触摸触点抬起时将惯性行为引入交互。在惯性的情况下,内容继续平移,直到达到某个距离阈值而没有来自用户的直接输入。使用捕捉点修改此惯性行为。

但是,在您的代码中,您已禁用水平滚动和已使用的按钮进行滚动,因此快照点无法正常工作,并且设置HorizontalSnapPointsType属性不会产生任何影响。< / p>