2011-01-05 3 views
2

그림을 표시하는 데 사용되는 "캔버스"이라는 최상위 레이어가 있습니다. 그런 다음 내 작업 공간 메뉴를 표시하는 "menuCanvas"이라는 가장 낮은 계층에 이벤트 menuCanvas_touchDown을 사용하려고합니다. 그러나 그림을 터치하면 menuCanvas_touchDown으로 이동합니다. 그것은 menuCanvas 레이어에서 찾아야합니다. WPF 레이어 이벤트 분리

alt text

<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> 

나는 영상과 아무것도 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

감사의 코드를 게시 할 수 있습니다. –