WPF ScrollViewerがスクロールする量を変更することはできますか?スクロールビューアを変更してマウスホイールまたはスクロールビューアの矢印を使用した場合、スクロールバーの増分を変更できるかどうかは疑問です。Wpf ScrollViewerスクロール量
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
スクロールビューアでビヘイビアを実装できます。私の場合、CanContentScroll
は機能しませんでした。以下のソリューションは、マウスホイールでスクロールしたり、スクロールバーをドラッグしたりするためのものです。私はscrollbar1.ValueChangedに全体の数字を確実にするためにこれをした
<ScrollViewer MaxHeight="248"
VerticalScrollBarVisibility="Auto">
<i:Interaction.Behaviors>
<behaviors:StepSizeBehavior StepSize="62" />
</i:Interaction.Behaviors>
0
:
scrollbar1.Value = Math.Round(scrollbar1.Value, 0, MidpointRounding.AwayFromZero)
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);
}
}
あなたはこのようにそれを使用します
関連する問題
- 1. WPF ScrollViewerが垂直にスクロールしない
- 2. WPFクリックボタンScrollviewer
- 3. WPF - カスタムコントロールScrollViewer
- 4. wpf listview itempanel scrollviewer
- 5. WPF ScrollViewerの/キャンバスマウスイベントハンドラ
- 6. ScrollViewerのディスプレイ2つのスクロール
- 7. WPF ScrollViewerの問題
- 8. wpfのScrollViewerのスクロール範囲を設定する
- 9. C#/ WPF - ScrollViewerのスクロール位置を取得しますか?
- 10. WPF ScrollViewer ItemControlを含む横方向にスクロールのクリップ/スクロールを行わない
- 11. WPFのスクロールされていないスクロールされていないScrollviewer
- 12. ScrollViewerはスクロールせずに
- 13. ScrollViewerがスクロールしない
- 14. itemscontrolを使用したScrollviewer論理スクロール
- 15. WPFのScrollViewerでの問題
- 16. WPFリファレンスScrollViewerテンプレートのScrollContentPresenter
- 17. WPFのScrollViewerでの問題
- 18. WPF Scrollviewer on touch screen tablet
- 19. MVVMのScrollViewerでコントロールの上にスクロール
- 20. wp7、ScrollViewerでスクロールをブロックする方法
- 21. ScrollViewerがWP7をスクロールします。
- 22. WP7 - スクロールのListBox外部ScrollViewerの
- 23. スライダー\ ScrollViewerのは、WPFで適切
- 24. WPF用水平スクロールバーScrollViewer never displayed
- 25. WPF ScrollViewer Borderを削除する方法
- 26. ScrollViewer内のWPF WrapPanelの問題
- 27. WPF ScrollViewerとDataGridセル内のTextWrapping
- 28. WinForm ScrollViewer
- 29. リストボックスは、ScrollViewerのプロパティを持つWPFのWPF
- 30. jScrollPaneスクロール量