考慮一下:如何防止ScrollViewer處理後代的MouseMove事件? (Silverlight的用於Windows電話)
<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替換爲一個包含更多項目而不是其高度的ListBox,並且您可以滑過列表框項目而無需ScrollViewer作出反應。
但是如何?它是否也是ListBox中的ScrollViewer,這就是它在那裏工作的原因,或者它也可以用於我的控制嗎?