2016-11-30 64 views
0

我創建了一個UserControl,它包含一個ScrollViewer,一個StackPanel和兩個按鈕。我已禁用水平滾動條並希望使用按鈕滾動。但是當我在控件中設置Horizo​​ntalSnapPointsType時,它不起作用。如果我將ScrollViewer直接添加到我的主xaml中,則該屬性已設置。像Horizo​​ntalScrollBarVisibility和Horizo​​ntalScrollMode其他屬性設置正確,所以我不知道問題是什麼。我已經在下面包含了xaml。UWP中的Horizo​​ntalSnapPointsType ScrollViewer UserControl未設置

<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

ScrollViewer.HorizontalSnapPointsType property聲明操縱行爲的反應如何沿水平軸的捕捉點。而且,因爲它是在備註聲明,此屬性適用於平移操作:

對於平移動作,經常有自然的停放場所。捕捉點提供了一種指示這些地點在哪裏的方法。然後,當用戶滑動時,操作結果傾向於使用如SnapPointsType值所表示的自然點使用行爲。

更具體地說,該屬性適用於觸摸模式。參考Guidelines for panning的「搖攝行爲」部分:

使用輕掃手勢進行搖攝在觸摸接觸被解除時,會在交互中引入慣性行爲。在慣性下,內容持續平移直到達到一定的距離閾值而沒有用戶的直接輸入。使用捕捉點來修改這種慣性行爲。

然而,在你的代碼,您禁用了水平滾動和使用按鈕滾動,所以捕捉點不會工作,設置HorizontalSnapPointsType屬性將不會有任何效果。

相關問題