c# - 如何在 UWP XAML/C# 中更改滚动查看器的滚动量?

标签 c# uwp uwp-xaml scrollviewer

我正在使用 ListView 来显示一些项目,比如说高度 100。在很多项目的情况下,垂直滚动条与 ScrollViewer 属性一起显示。但是,当用户滚动列表时,它有时会滚动一半屏幕,因此滚动一次它会覆盖整个 ListView 。

我想要一些代码来设置滚动量,当时说 100 高度。
我尝试通过搜索 doc但找不到任何东西。实际上,数据来自绑定(bind),项目数量各不相同,但每个项目都有固定的高度就可以了。

示例代码:

<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>

我如何实现这一点,是否有属性(property)或什至可以覆盖当前行为?

最佳答案

实现听起来像是您想要实现的效果的一种更简单的方法是在 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>

如果这没有达到您想要的效果,请尝试为 VerticalSnapPointsType 设置不同的值。和 VerticalSnapPointsAlignment .

关于c# - 如何在 UWP XAML/C# 中更改滚动查看器的滚动量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45779387/

相关文章:

c# - 获取 "Tuple element name is inferred. Please use language version 7.1 or greater to access an element by its inferred name."

c# - UWP M3U 流播放列表

c# - Entity Framework : Dynamically generate multiple OR condition on JOIN

c# - Unity - 这是否有必要始终在固定更新中施加力

c# - 在UWP中处理未处理的异常-Windows 10

c# - Windows Phone 8.1 应用程序和 UWP 应用程序之间的 SHA1 哈希值不同

c# - VisualStudio UWP/XAML 设计器未显示 UserControl |由于缺少程序集,无法显示元素 "foo"

c# - UWP 与 ITextRange 接口(interface)的使用。 WPF 中的 TextRange 对象

c# - 这个加密的 QueryString 有什么问题 - Base-64 字符数组的长度无效

c# - 告诉,不要问原则和密码过期