2011-01-05 13 views
2

私は "キャンバス"と呼ばれる最高のレイヤーを画像の表示に使用しています。次に、イベントメニューの「キャンバスタッチダウン」を「menuCanvas」という最下位レイヤーに使用して、私のワークスペースメニューを表示しようとしています。しかし、私は写真をタッチすると、それはmenuCanvas_touchDownに行く。これはmenuCanvasレイヤーにあります。WPFレイヤーイベント分離

<Canvas x:Name="menuCanvas" 
    TouchDown="menuCanvas_TouchDown" TouchUp="menuCanvas_TouchUp" 
    TouchMove="menuCanvas_TouchMove" TouchLeave="menuCanvas_TouchLeave" 
    TouchEnter="menuCanvas_TouchEnter"     
    VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
    Background="Transparent" 
    IsManipulationEnabled="True"> 


    <Canvas x:Name="drawCanvas" 
    TouchDown="drawCanvas_TouchDown" TouchUp="drawCanvas_TouchUp" 
    TouchMove="drawCanvas_TouchMove" TouchLeave="drawCanvas_TouchLeave" 
    TouchEnter="drawCanvas_TouchEnter"     
    VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
    Background="Transparent" 
    IsManipulationEnabled="True"> 
      <Canvas x:Name="canvas"></Canvas> 
      </Canvas> 
    </Canvas> 

alt text

私は絵と何もmenuCanvas_touchDownイベントに起こるをタッチします。 この問題を解決するにはどうすればよいですか?私はe.handleを使用しようとしていますが、画像の操作を壊します。

おかげ

編集:

をdrawCanvas_TouchDownとdrawCanvas_TouchUpコードがあります。

private void drawCanvas_TouchDown(object sender, TouchEventArgs e) 
    { 
     if (state == (int)STATE.Pen) 
     { 
      if (_activeStrokes.TryGetValue(e.TouchDevice.Id, out stroke)) 
      { 
       FinishStroke(stroke); 
       return; 
      } 

      // Create new stroke, add point and assign a color to it. 
      Stroke newStroke = new Stroke(); 
      newStroke.Color = _touchColor.GetColor(); 
      newStroke.Id = e.TouchDevice.Id; 

      // Add new stroke to the collection of strokes in drawing. 
      _activeStrokes[newStroke.Id] = newStroke; 
     } 

    }private void drawCanvas_TouchUp(object sender, TouchEventArgs e) 
    { 
     // Find the stroke in the collection of the strokes in drawing. 
     if (state == (int)STATE.Pen) 
     { 
      if (_activeStrokes.TryGetValue(e.TouchDevice.Id, out stroke)) 
      { 
       FinishStroke(stroke); 
      } 
     } 
    } 
+0

はあなたが非常に多くdrawCanvas_TouchUp'など 'drawCanvas_TouchDown'、'のため – ChrisF

答えて

2

e.OriginalSourceを使用しようとしましたか?イベントのソースを確認することができます。

if(e.OriginalSource == menuCanvas) 
{ 
    //Your code 
} 
+0

おかげでコードを投稿することができます。 –