如果我們有畫布的ScrollViewer(預覽)MOUSEBUTTONDOWN事件順序
<ScrollViewer Name="scroll_viewer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Canvas Name="canvas" Height="200" Width="200">
<Rectangle Fill="AliceBlue" Width="100" Height="100"/>
</Canvas>
</ScrollViewer>
與處理程序:
scroll_viewer.PreviewMouseLeftButtonDown
scroll_viewer.MouseLeftButtonDown
canvas.PreviewMouseLeftButtonDown
那麼,如果我們在我們得到scroll_viewer_PreviewMouseLeftButtonDown
矩形單擊稱爲第一則canvas_PreviewMouseLeftButtonDown
但scroll_viewer_MouseLeftButtonDown
是不叫。
我想在畫布中首先處理點擊事件 - 如果單擊對象,我想處理事件(用於對象拖動)。如果沒有畫布對象被點擊,我想在scroll_viewer中處理事件(用鼠標管理scrollview平移)。
如何管理這個給定的呼叫順序是我想要的反例,並且不會調用非perview版本scroll_viewer.MouseLeftButtonDown
?
UPDATE:
從這個帖子:Silverlight forums
((FrameworkElement)scroll_viewer.GetValue(ScrollViewer.ContentProperty)).MouseLeftButtonDown += scroll_viewer_MouseLeftButtonDown;
不工作IE瀏覽器預覽事件之後被調用 - 可一些解釋爲什麼需要這個不到明顯的語法?
+1對於透明/ hittest的事情 - 我已經注意到,使用默認畫布,如果沒有對象點擊,則沒有事件調用。 – Ricibob