Если мы имеем
<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 (для управления панорамированием прокрутки с помощью мыши).
Как справиться с этим, учитывая, что порядок вызовов противоположен тому, что я хочу, и что версия без perview scroll_viewer.MouseLeftButtonDown
не звонил?
ОБНОВЛЕНИЕ:
Из этого сообщения: форумы Silverlight
((FrameworkElement)scroll_viewer.GetValue(ScrollViewer.ContentProperty)).MouseLeftButtonDown += scroll_viewer_MouseLeftButtonDown;
РАБОТАЕТ ЛИ, т.е. вызывается после событий предварительного просмотра - могут ли некоторые объяснить, почему требуется этот менее очевидный синтаксис?