是否可以更改WPF ScrollViewer滾動的數量?我只是想知道是否可以更改滾動查看器,以便在使用鼠標滾輪或滾動查看器箭頭時可以更改增量滾動的數量。Wpf ScrollViewer Scroll Amount
12
A
回答
12
簡短的回答是:如果不編寫一些自定義滾動代碼,沒有辦法做到這一點,但不要讓它嚇倒你,它並不是那麼難。
ScrollViewer通過使用物理單位(即像素)進行滾動或通過與IScrollInfo實現結合使用來使用邏輯單位。這由設置the CanContentScroll property控制,其中值爲false表示「使用物理單位滾動內容」,值true表示「邏輯滾動內容」。
那麼ScrollViewer如何在邏輯上滾動內容?通過與IScrollInfo實現進行通信。因此,當某人執行邏輯操作時,您可以如何接管面板內容的滾動情況。 Take a look at the documentation for IScrollInfo以獲得可以請求滾動的所有測量邏輯單元的列表,但是由於您提到了鼠標滾輪,因此您將主要對MouseWheelUp/Down/Left/Right方法感興趣。
0
你可以在scrollviewer上實現一個行爲。在我的情況下,CanContentScroll
沒有工作。下面的解決方案適用於滾動鼠標滾輪以及拖動滾動條。
public class StepSizeBehavior : Behavior<ScrollViewer>
{
public int StepSize { get; set; }
#region Attach & Detach
protected override void OnAttached()
{
CheckHeightModulesStepSize();
AssociatedObject.ScrollChanged += AssociatedObject_ScrollChanged;
base.OnAttached();
}
protected override void OnDetaching()
{
AssociatedObject.ScrollChanged -= AssociatedObject_ScrollChanged;
base.OnDetaching();
}
#endregion
[Conditional("DEBUG")]
private void CheckHeightModulesStepSize()
{
var height = AssociatedObject.Height;
var remainder = height%StepSize;
if (remainder > 0)
{
throw new ArgumentException($"{nameof(StepSize)} should be set to a value by which the height van be divised without a remainder.");
}
}
private void AssociatedObject_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
const double stepSize = 62;
var scrollViewer = (ScrollViewer)sender;
var steps = Math.Round(scrollViewer.VerticalOffset/stepSize, 0);
var scrollPosition = steps * stepSize;
if (scrollPosition >= scrollViewer.ScrollableHeight)
{
scrollViewer.ScrollToBottom();
return;
}
scrollViewer.ScrollToVerticalOffset(scrollPosition);
}
}
你會使用這樣的:
<ScrollViewer MaxHeight="248"
VerticalScrollBarVisibility="Auto">
<i:Interaction.Behaviors>
<behaviors:StepSizeBehavior StepSize="62" />
</i:Interaction.Behaviors>
0
我這樣做是爲了確保scrollbar1.ValueChanged整數:
scrollbar1.Value = Math.Round(scrollbar1.Value, 0, MidpointRounding.AwayFromZero)
相關問題
- 1. scrollviewer does not scroll to bottom
- 2. WPF ScrollViewer
- 3. WPF ScrollViewer問題
- 4. wpf scrollviewer scrolltoverticaloffset
- 5. wpf listview itempanel scrollviewer
- 6. ScrollViewer問題,WPF
- 7. Wpf Zoombox with ScrollViewer
- 8. WPF ScrollViewer平移
- 9. 使用scrollviewer截圖WPF datagrid
- 10. ScrollViewer控件在WPF
- 11. WPF ScrollViewer集合ScrollableHeight
- 12. 如何在WPF ContentControl中查找ScrollViewer?
- 13. 如何訪問WPF中ComboBox內的ScrollViewer?
- 14. WPF的ScrollViewer對話框
- 15. WPF從TreeView中移除ScrollViewer
- 16. Wpf TreeView的ScrollViewer調整
- 17. WPF:文本框內的ScrollViewer
- 18. 帶列表框的WPF ScrollViewer
- 19. C#WPF - Global ScrollViewer模式
- 20. WPF停止的ScrollViewer Scroilling?
- 21. 無法讓WPF ScrollViewer工作
- 22. C#WPF - ScrollViewer + TextBlock問題
- 23. ScrollViewer WPF右下角顏色
- 24. WPF隱藏ScrollViewer的酒吧
- 25. Wpf Scrollviewer和ScrollChanged事件
- 26. ScrollViewer wpf - 不起作用
- 27. 的ScrollViewer沒有在WPF WindowsFormHost
- 28. JS refresh minimu amount
- 29. 的before_filter {@amount = Amount.new}
- 30. WinForm ScrollViewer