如果我们拥有
如果我们在矩形中点击,首先调用
我想首先在画布中处理单击事件 - 如果单击了对象,则要处理事件(用于对象拖动)。如果没有单击画布对象,则要在 scroll_viewer 中处理事件(用于使用鼠标管理滚动视图平移)。
考虑到调用顺序与我的要求相反,并且不会调用非预览版
<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 中处理事件(用于使用鼠标管理滚动视图平移)。
考虑到调用顺序与我的要求相反,并且不会调用非预览版
scroll_viewer.MouseLeftButtonDown
,该如何处理?
更新:
来自此贴子:Silverlight 论坛
((FrameworkElement)scroll_viewer.GetValue(ScrollViewer.ContentProperty)).MouseLeftButtonDown += scroll_viewer_MouseLeftButtonDown;
当预览事件调用后,确实起作用 - 有人能解释一下为什么需要这种不太明显的语法吗?