如何在 UWP XAML/C# 中通过滚动查看器更改滚动量?

Chi*_*ani 5 c# scrollviewer uwp uwp-xaml

我正在使用 ListView 来显示一些项目,比如高度为 100。如果有很多项目,垂直滚动条将通过 ScrollViewer 属性显示。然而,当用户滚动列表时,它有时会滚动一半屏幕,因此只需滚动一下,它就会覆盖整个列表视图。

我想要一些代码来设置滚动量,比如当时的 100 高度。我尝试搜索文档但找不到任何内容。实际上,数据来自绑定,项目的数量各不相同,但每个项目都有固定的高度是可以的。

示例代码:

<ListView Name="lvSummaryList" ScrollViewer.VerticalScrollMode="Enabled"
                                              ScrollViewer.IsVerticalRailEnabled="True"
                                              VerticalAlignment="Bottom"
                                              SelectionMode="None"                                          ScrollViewer.VerticalScrollBarVisibility="Auto"   
                                              ScrollViewer.HorizontalScrollMode="Disabled"              ScrollViewer.IsVerticalScrollChainingEnabled="True"
                                              Margin="0,5,10,0"
                                              MaxHeight="600" >
                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <ItemsWrapGrid Orientation="Horizontal" GroupPadding="1"  Margin="1" MinHeight="100" MaxHeight="200" MaximumRowsOrColumns="4" VerticalAlignment="Center"/>
                    </ItemsPanelTemplate>
                </ListView.ItemsPanel>
 </ListView>
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一点,是否有属性甚至可以覆盖当前行为?

Dav*_*ver 3

实现听起来像您想要实现的效果的一种更简单的方法是在 ScrollViewer 上启用捕捉点。

使用以下内容作为 ListView 的样式:

        <Style TargetType="ListView"
               x:Key="SnapListViewStyle">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListView">
                        <Border BorderBrush="{TemplateBinding BorderBrush}"
                                Background="{TemplateBinding Background}"
                                BorderThickness="{TemplateBinding BorderThickness}">
                            <ScrollViewer x:Name="ScrollViewer"
                                          TabNavigation="{TemplateBinding TabNavigation}"
                                          HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
                                          HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                                          IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}"
                                          VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
                                          VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
                                          IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}"
                                          IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
                                          IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
                                          VerticalSnapPointsAlignment="Near"
                                          VerticalSnapPointsType="MandatorySingle"
                                          ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}"
                                          IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
                                          BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"
                                          AutomationProperties.AccessibilityView="Raw">
                                <ItemsPresenter Header="{TemplateBinding Header}"
                                                HeaderTemplate="{TemplateBinding HeaderTemplate}"
                                                HeaderTransitions="{TemplateBinding HeaderTransitions}"
                                                Footer="{TemplateBinding Footer}"
                                                FooterTemplate="{TemplateBinding FooterTemplate}"
                                                FooterTransitions="{TemplateBinding FooterTransitions}"
                                                Padding="{TemplateBinding Padding}" />
                            </ScrollViewer>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
Run Code Online (Sandbox Code Playgroud)

如果这没有达到您想要的效果,请尝试为VerticalSnapPointsTypeVerticalSnapPointsAlignment尝试不同的值。