本主题描述如何控制最终用户是否可以滚动视图,如何在代码中滚动视图,以及如何响应最终用户的滚动操作。 注意,滚动视图的方式之一是移动单元格的焦点,但是本主题所关注的是不改变单元格焦点的滚动技术。 要获得关于在单元格间移动焦点的信息,请参阅 为单元格设置焦点 和 在行间移动焦点 主题。
滚动卡片视图
在默认情况下,卡片视图显示一个水平滚动条,并且移动它的滚动块时会把焦点移动到下一张/上一张卡片。 注意,即使所有卡片都是可视的,滚动条也被显示。 如果不需要显示滚动条,则把 CardOptionsView.ShowHorzScrollBar 选项设置为 false。
当 CardView.VertScrollVisibility 属性值是 ScrollVisibility.Auto 或 ScrollVisibility.Always 时,卡片视图的高度只能小于垂直适合卡片所需的高度。 在这种情况下,减小视图的高度会导致在卡片内显示 滚动按钮。 这些按钮允许最终用户垂直滚动卡片。 注意,如果禁用它们 (CardView.VertScrollVisibility 属性值是 ScrollVisibility.Never),则视图的高度不能小于单张卡片所需的高度。
可以在代码中使用 CardView.TopLeftCardIndex 属性来滚动卡片视图。 把该属性设置为所需的卡片索引,使卡片显示在视图中的左上角。 读取此属性值可以确定当前视图的滚动偏移量。 当更改此属性值 (视图被滚动) 时,CardView.TopLeftCardChanged 事件发生。 接管该事件来处理视图的滚动。
另一个提供卡片视图滚动功能的成员是 CardView.FocusedCardTopFieldIndex 属性。 该属性允许垂直滚动获得焦点的卡片 (最终用户可以使用滚动按钮执行同样的处理)。
下面的插图举例说明了所列出的设置。
滚动卡片视图
与卡片视图不同,网格视图可以显示水平滚动条和垂直滚动条。 对最终用户,有许多设置会影响这些滚动条的可用性和行为。 这些设置在下表中列出。
成员 | 说明 |
---|---|
GridView.HorzScrollVisibility | 指定水平滚动条是否始终隐藏、始终可视、或者当需要时显示。 |
GridView.VertScrollVisibility | 指定垂直滚动条是否始终隐藏、始终可视、或者当需要时显示。 |
GridView.ScrollStyle | 提供选项,指定何时实际发生滚动 —— 是在滚动条的滚动块被移动时,还是在滚动块被放开时。 |
GridView.HorzScrollStep | 指定在按下水平滚动条的按钮时,视图被滚动的像素值。 |
GridOptionsBehavior.SmartVertScrollBar | 指定当垂直滚动条在最底部位置时,网格视图是在顶部还是在底部显示最后一行。 |
要通过代码滚动网格视图,则使用 GridView.TopRowIndex 和 GridView.LeftCoord 属性。 第一个属性用于垂直滚动视图,并指定在视图顶部显示的行的可视索引。 第二个属性允许水平滚动视图,并以像素指定滚动偏移量。 当这些属性值改变时 (例如,当最终用户滚动视图时), 分别引发 GridView.TopRowChanged 和 GridView.LeftCoordChanged 事件。 接管这些事件来处理视图滚动。
下面的插图举例说明了这些设置。
如果需要滚动网格视图来确保特定的列可视,则把该列作为 GridView.MakeColumnVisible 方法的参数。 注意,根据完全显示列内容所需的最小值来滚动视图。 如果需要把视图滚动到特定的行,则把行句柄作为 GridView.MakeRowVisible 方法的参数。 注意,此方法使行可视,即使之前它被隐藏在已折叠的组内。 此外,根据所需的最小值滚动视图。