【发布时间】:2021-01-05 05:36:18
【问题描述】:
我在 ScrollViewer 中有一个水平方向的 ListBox。当列表增长时,它会自动滚动到最后一个元素。滚动条可以工作,但是必须为此禁用。我需要有单独的按钮,它们可以通过预定的迭代滚动 ScrollViewer(很像滚动条上的按钮)。为此,我尝试过:
sv.ScrollToHorizontalOffset(sv.HorizontalOffset + 20);
但是,ScrollViewer 的 HorizontalOffset 似乎始终为 0,并且该方法对任何值都不做任何事情。
sv.LineRight();
sv.LineLeft();
两者都不起作用,可能是因为唯一的子元素是 ListBox。 如果我将 ListBox 的方向更改为垂直,则 ScrollViewer 的 VerticalOffset 会随着滚动/添加新元素而改变,并且 ScrollToVerticalOffset 可以正常工作。为什么这与水平方向不同?还有其他解决方案吗?
注意:这是在没有使用 XAML 放置控件的情况下完成的。
【问题讨论】:
-
"ListBox ... inside a ScrollViewer" 一开始似乎没有意义。 ListBox 已经支持滚动。它有一个 ScrollIntoView 方法。
-
@Clemens 谢谢你,但我的想法是我需要将滚动位置移动一定数量的像素,而不仅仅是滚动到一个项目。