スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WPFのListBoxをチルトホイールで横スクロールする

  • 2016/02/03 22:35
  • Category: WPF
WPFのListBoxは、マウスのチルトホイールを左右に傾けても横方向にスクロールしてくれません。
MouseWheel、PreviewMouseWheelイベントも回転にしか対応していないようで…


仕方ないので、まずはWndProcをフックして横スクロールイベントを検知します。
http://stackoverflow.com/questions/4158101/how-to-horizontally-scroll-in-wpf-using-mouse-tilt-wheel
チルトホイールを傾けたときのメッセージはWM_MOUSEHWHEEL(0x020E)、wParamの上位16ビット(wParam.ToInt32() >> 16)がスクロールした方向です。
左に倒すと-120、右に倒すと120になります。


次にListBoxをスクロールするために、ListBoxの子要素のScrollViewerを操作します。
ScrollViewer.LineLeftScrollViewer.LineRightで左右にスクロールできます。
傾け続けた場合の挙動は、スクロールバーの端にあるボタンを長押ししたときと同じ(?)ようです。


コード全体は以下のようになりました。前回と同じくBehaviorです。
カーソルがListbox内にあるときだけスクロールするように、MouseEnter、MouseLeaveでフラグ管理して制御してます。
53行目のVisualTreeHelpers.FindVisualChildはググればすぐに出てくる…と思います。



スポンサーサイト

Pagination

Trackback

Trackback URL

http://someprog.blog.fc2.com/tb.php/15-98291a82

Comment

Post Your Comment

コメント登録フォーム
公開設定

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。