このことを考慮:
<ScrollViewer>
<!-- Several Controls /-->
<MyControl MouseMove="myMouseMoveHandler" />
<!-- Several Controls /-->
</ScrollViewer>
MyControl は、回転可能な円にカラー スペクトルを、三角形に選択した色相のニュアンスを示す HSV カラー選択コントロールです。それはすばらしく見えますが、残念ながらまだ写真を投稿できません (担当者)。表面上のすべての方向でマウスの動きを処理できる必要があります。
MyControl でマウスを動かすと (そして、動きを正しく処理します)、ScrollViewer はまだスクロールします!
これは、ScrollViewer 内の唯一のコントロールであり、コントロール内で動きが開始および終了する場合、および/または MouseLeftButtonDown / -Up イベントの両方で e.Handled = true を設定した場合でも発生します。..Down で CaptureMouse() を使用し、..Up で ReleaseMouseCapture() を使用しても役に立ちません。
ScrollViewer の実装を変更できない (または変更できる?) ことに同意するでしょう。また、コントロールが ScrollViewer 内でホストされていないことを保証することはできません (たとえば、公開したいため)。
ScrollViewer が MouseMove を取得できないようにすることが可能でなければなりません。証明: MyControl を、Height に収まるよりも多くのアイテムを含む ListBox に置き換えるだけで、ScrollViewer が反応せずに ListBox アイテムをスワイプできます。
しかし、どのように?それはListBox内のScrollViewerでもありますか?それがそこで機能する理由ですか?それとも私のコントロールでも実行できますか?