我创建了一个包含ScrollViewer,StackPanel和两个按钮的UserControl。我已禁用水平滚动条,并希望使用按钮滚动。但是当我在控件内部设置HorizontalSnapPointsType时它不起作用。如果我将ScrollViewer直接添加到我的主xaml中,则会设置该属性。其他属性如HorizontalScrollBarVisibility和HorizontalScrollMode设置正确,所以我不确定问题是什么。我已经在下面包含了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>
答案 0 :(得分:0)
ScrollViewer.HorizontalSnapPointsType property声明操纵行为如何对沿水平轴的捕捉点作出反应。正如在备注中声明的那样,此属性适用于平移操作:
对于平移动作,通常有自然停止的位置。捕捉点提供了一种指示这些地方的方式。然后,当用户滑动时,操作结果有利于使用SnapPointsType值表示的自然点使用行为。
更具体地说,此属性适用于触摸模式。参考&#34;平移行为&#34; Guidelines for panning的部分:
使用滑动手势进行平移会在触摸触点抬起时将惯性行为引入交互。在惯性的情况下,内容继续平移,直到达到某个距离阈值而没有来自用户的直接输入。使用捕捉点修改此惯性行为。
但是,在您的代码中,您已禁用水平滚动和已使用的按钮进行滚动,因此快照点无法正常工作,并且设置HorizontalSnapPointsType
属性不会产生任何影响。< / p>