WPF如何增加ScrollBar箭头按钮点击滚动速度
WPF how to increase ScrollBar arrow button click scroll speed
我有一个 UserControl
包含一个 ScrollViewer
和 "sychronized" ScrollBar
与之关联绑定 ViewportSize
和 Maximum
ScrollBar
的属性,简化代码:
//xaml
<ScrollViewer x:Name="scViewer" <!--and its content-->/>
<ScrollBar ViewportSize="{Binding ViewportWidth, ElementName=scViewer}"
Maximum="{Binding ScrollableWidth, ElementName=scViewer}" x:Name="scHBar"
Orientation="Horizontal" Scroll="HScrollBar_Scroll"/>
//code behind
private void HScrollBar_Scroll(object sender, ScrollEventArgs e)
{
scViewer.ScrollToHorizontalOffset(e.NewValue);//and the other way around
}
它按预期工作,除了当用户点击 ScrollBar
上的 up/down 箭头时,速度 非常 慢,准确地说每次点击 0.1 像素,这需要用户单击 10 次(!)才能滚动一个像素。奇怪的是,鼠标滚轮滚动速度和拖动条速度一样好。
我想到的唯一解决方案是乘以 e.NewValue
增量,但是我不知道源是否是箭头按钮之一(不是鼠标滚轮或拖动条),所以它会破坏所有其他类型的交互。
关于鼠标滚轮滚动速度的问题很多,但是我找不到一个提到单击ScrollBar
的箭头按钮时的速度的问题。如何更改 ScrollBar 的 箭头按钮 单击滚动速度?
Scrollbar
还有属性SmallChange
和LargeChange
,分别默认为0.1和1。第一个是控制点击箭头按钮时滚动的速度,所以改变值:
<ScrollBar SmallChange="30" LargeChange="150"
ViewportSize="{Binding ViewportWidth, ElementName=scViewer}"
Maximum="{Binding ScrollableWidth, ElementName=scViewer}" x:Name="scHBar"
Orientation="Horizontal" Scroll="HScrollBar_Scroll"/>
对我有用。
我有一个 UserControl
包含一个 ScrollViewer
和 "sychronized" ScrollBar
与之关联绑定 ViewportSize
和 Maximum
ScrollBar
的属性,简化代码:
//xaml
<ScrollViewer x:Name="scViewer" <!--and its content-->/>
<ScrollBar ViewportSize="{Binding ViewportWidth, ElementName=scViewer}"
Maximum="{Binding ScrollableWidth, ElementName=scViewer}" x:Name="scHBar"
Orientation="Horizontal" Scroll="HScrollBar_Scroll"/>
//code behind
private void HScrollBar_Scroll(object sender, ScrollEventArgs e)
{
scViewer.ScrollToHorizontalOffset(e.NewValue);//and the other way around
}
它按预期工作,除了当用户点击 ScrollBar
上的 up/down 箭头时,速度 非常 慢,准确地说每次点击 0.1 像素,这需要用户单击 10 次(!)才能滚动一个像素。奇怪的是,鼠标滚轮滚动速度和拖动条速度一样好。
我想到的唯一解决方案是乘以 e.NewValue
增量,但是我不知道源是否是箭头按钮之一(不是鼠标滚轮或拖动条),所以它会破坏所有其他类型的交互。
关于鼠标滚轮滚动速度的问题很多,但是我找不到一个提到单击ScrollBar
的箭头按钮时的速度的问题。如何更改 ScrollBar 的 箭头按钮 单击滚动速度?
Scrollbar
还有属性SmallChange
和LargeChange
,分别默认为0.1和1。第一个是控制点击箭头按钮时滚动的速度,所以改变值:
<ScrollBar SmallChange="30" LargeChange="150"
ViewportSize="{Binding ViewportWidth, ElementName=scViewer}"
Maximum="{Binding ScrollableWidth, ElementName=scViewer}" x:Name="scHBar"
Orientation="Horizontal" Scroll="HScrollBar_Scroll"/>
对我有用。