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. C#/ WPF - ScrollViewerのスクロール位置を取得しますか?
- 5. wpfのScrollViewerのスクロール範囲を設定する
- 6. WPF ScrollViewerの問題
- 7. ScrollViewerがスクロールしない
- 8. itemscontrolを使用したScrollviewer論理スクロール
- 9. MVVMのScrollViewerでコントロールの上にスクロール
- 10. WPF Scrollviewer on touch screen tablet
- 11. WPFのScrollViewerでの問題
- 12. WPFリファレンスScrollViewerテンプレートのScrollContentPresenter
- 13. WPFのScrollViewerでの問題
- 14. wp7、ScrollViewerでスクロールをブロックする方法
- 15. ScrollViewerがWP7をスクロールします。
- 16. WP7 - スクロールのListBox外部ScrollViewerの
- 17. jScrollPaneスクロール量
- 18. WPF用水平スクロールバーScrollViewer never displayed
- 19. スライダー\ ScrollViewerのは、WPFで適切
- 20. WinForm ScrollViewer
- 21. リストボックスは、ScrollViewerのプロパティを持つWPFのWPF
- 22. xaml ScrollViewer内のScrollViewer
- 23. SizeToContent = WidthAndHeightのScrollViewer
- 24. WPF ScrollViewerを再利用してスクロール可能なコントロールを作成する方法はありますか?
- 25. WPFフレームでScrollViewer(垂直スクロール用)を設定する正しい方法はありますか?
- 26. ScrollViewerのスクロール可能領域にAdornerを含めます
- 27. 私のScrollViewerがスクロールしないのはなぜですか?
- 28. ScrollViewerはUWPでスクロールしません。Windows 10 Phone
- 29. 物理スクロールアニメーション(タッチ)を使用したScrollviewer論理スクロール
- 30. scrollviewerのリストビューはスクロールビューワのスクロールを防ぎます