私たちが持っている場合
<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;
動作しますか?つまり、プレビューイベントの後に呼び出されます-なぜこれが明白ではない構文が必要なのかを説明できますか?