2011-12-16 20 views
2

私は、次のコントロールを作成しました:WPF ScrollViewerの/キャンバスマウスイベントハンドラ

<UserControl x:Class="FooBar.AnnotationControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="400" Width="500" > 
    <ScrollViewer Height="400" Width="500"> 
     <Canvas Height="400" Width="500" Name="ctlCanvas" MouseLeftButtonDown="MouseLeftButtonDownHandler" > 
      <Canvas.RenderTransform> 
       <ScaleTransform x:Name="ZoomTransform" /> 
      </Canvas.RenderTransform> 
     </Canvas> 
    </ScrollViewer> 
</UserControl> 

namespace FooBar 
{ 

    public partial class AnnotationControl : UserControl 
    { 
     public AnnotationControl() 
     { 
      InitializeComponent(); 

     } 

     private void MouseLeftButtonDownHandler(object sender, MouseButtonEventArgs args) 
     { 
      //Do Something 
     } 

    } 

} 

私はキャンバスをクリックしたときに、私はMouseLeftButtonDownHandlerでブレークポイントをヒットしません。私はこのハンドラをScrollViewerにアタッチして、同じ結果を得ます。ここで何が起こっているか考えてみましょうか?

+0

は、使用して、コンストラクタで手動でイベントハンドラを追加してみてくださいすることができ[ 'のAddHandler(...)'](http://msdn.microsoft.com/en-us/library/ms598898.aspx ) 方法。そうすれば、既に処理されたイベントを処理するように指定することができます(何かイベントを飲み込んだ場合など)。まだ運がない場合は、何かがイベントが発射されるのを妨げる可能性があります。 –

答えて

1

キャンバスのデフォルトの背景は透明です。ヒットテストを通過させることができます。あなたのキャンバスをHitTestsに登録させるには、背景色を付けます。

<Canvas Background="White" ... /> 
+0

面白いことに、私はコードビハインドのバックグラウンドを設定していましたが、私は他のすべてのコードでそれを取り除きました。これは、xamlで設定した場合にのみ機能します。ありがとう! – PhilBrown

関連する問題