WPF ScrollViewer 带按钮水平滚动

问题描述 投票:0回答:1

我有一个

ListBox
,其内部为水平方向。当列表增长时,它会自动滚动到最后一个元素。但是,必须为此禁用滚动条。我需要有单独的按钮,可以按预定的迭代滚动
ScrollViewer
(很像滚动条上的按钮)。为此,我尝试过:
ScrollViewer

但是,
sv.ScrollToHorizontalOffset(sv.HorizontalOffset + 20);

ScrollViewer
似乎始终为0,并且该方法不会对任何值执行任何操作。
HorizontalOffset

两者都不起作用,可能是因为唯一的子元素是 
sv.LineRight(); sv.LineLeft();

。 如果我将

ListBox
的方向更改为垂直,则
ListBox
ScrollViewer
会随着滚动/添加新元素而变化,并且
VerticalOffset
可以正常工作。为什么这与水平方向不同?还有其他解决办法吗?
注意:这是在没有使用 XAML 放置控件的情况下完成的。

c# .net wpf
1个回答
1
投票

拆下外部

ScrollToVerticalOffset

,仅使用

ScrollViewer
中内置的
ScrollViewer
在列表框中设置以下属性:

ListBox

这将使 
ScrollViewer.CanContentScroll="False"

属性以像素为单位工作。当它设置为

HorizontalOffset
时,它在项目中起作用。
True

这将保持滚动活动,但会隐藏滚动条。

在您的代码中,您可以像这样获得

ScrollViewer.HorizontalScrollBarVisibility="Hidden"

ScrollViewer
。在此示例中,我的
ListBox
被命名为
ListBox
x:Name="ListBox"

最后,您可以如下设置偏移量。在我的示例中,我创建了一个方法并从按钮单击事件处理程序中传递了一个值。

var scrollViewer = ListBox.FindChildByType<ScrollViewer>();

	
© www.soinside.com 2019 - 2024. All rights reserved.