我有一个
ListBox
,其内部为水平方向。当列表增长时,它会自动滚动到最后一个元素。但是,必须为此禁用滚动条。我需要有单独的按钮,可以按预定的迭代滚动 ScrollViewer
(很像滚动条上的按钮)。为此,我尝试过:ScrollViewer
但是,
sv.ScrollToHorizontalOffset(sv.HorizontalOffset + 20);
的
ScrollViewer
似乎始终为0,并且该方法不会对任何值执行任何操作。HorizontalOffset
两者都不起作用,可能是因为唯一的子元素是
sv.LineRight();
sv.LineLeft();
。 如果我将
ListBox
的方向更改为垂直,则 ListBox
的 ScrollViewer
会随着滚动/添加新元素而变化,并且 VerticalOffset
可以正常工作。为什么这与水平方向不同?还有其他解决办法吗?注意:这是在没有使用 XAML 放置控件的情况下完成的。
拆下外部
ScrollToVerticalOffset
,仅使用
ScrollViewer
中内置的 ScrollViewer
。在列表框中设置以下属性:
ListBox
这将使
ScrollViewer.CanContentScroll="False"
属性以像素为单位工作。当它设置为
HorizontalOffset
时,它在项目中起作用。True
这将保持滚动活动,但会隐藏滚动条。
在您的代码中,您可以像这样获得
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
的
ScrollViewer
。在此示例中,我的 ListBox
被命名为 ListBox
。x:Name="ListBox"
最后,您可以如下设置偏移量。在我的示例中,我创建了一个方法并从按钮单击事件处理程序中传递了一个值。
var scrollViewer = ListBox.FindChildByType<ScrollViewer>();