2010-12-04 2 views
3

인사말WPF - Canvas_MouseLeftButtonDown 이벤트

저는 어제 WPF로 개발하기 시작했고 몇 가지 문제가있었습니다. Canvas는 WinForms의 Panel과 동일한 것이라는 것을 알게되었습니다. 그러나 나는 'click'이벤트에 어려움을 겪고있다. MouseLeftButtonDown 이벤트입니다. 가 관련이 또는되지 않은 경우,이 이미지와 유세는 위의 이미지는 내가 어려움을 겪고 무엇을 기본적으로 UserControl을

Image + 3 Canvasses

에 있습니다. 당신이 보는 3 개의 이미지는 하나의 이미지입니다. 당신이 보는 사각형은 각각 다른 캔버스입니다. 어떤 캔버스를 클릭했는지에 따라 다른 일이 발생하기를 원합니다.

현재 나는 다음과 같은 코드를 가지고 : 나는 응용 프로그램을 실행할 때

<Grid> 
    <Canvas Name="canvasTerran" Height="27" Width="26" Margin="88,106,134,106" MouseLeftButtonDown="canvasTerran_MouseLeftButtonDown" /> 
    <Canvas Name="canvasZerg" Height="27" Width="26" Margin="117,107,105,107" MouseLeftButtonDown="canvasZerg_MouseLeftButtonDown" /> 
    <Canvas Name="canvasProtoss" Height="27" Margin="145,107,88,107" MouseLeftButtonDown="canvasProtoss_MouseLeftButtonDown" /> 
    <Image Name="imageRaces" Height="27" Width="73" Stretch="Fill" Source="pack://application:,,,/Images/Races/Races.png" /> 
</Grid> 

(사용자 정의 컨트롤은 당연히 메인 창에)를하고, 유세가 아무 일도 발생하지 있어야 할 곳에 내가 클릭합니다. 내가 열려고하는 이벤트 :

private void canvasTerran_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      MessageBox.Show("lolterran", "lol"); 

      // image on main window 
      // .Source = new BitmapImage(new Uri("pack://application:,,,/" + Constants.RACESPATH + "T.png")); 
     } 

내가 잘못 생각한 것을 실제로 볼 수 없으므로 어떤 제안이라도 환영받을 것입니다. 내가 WPF에 익숙하지 않다고 말한 것처럼 현재 시도하는 것보다 더 나은 방법이 있다고 생각한다면 그렇게 말하십시오!

미리 감사드립니다.

답변

4

실제 문제는 캔버스가 투명하다는 것입니다. 따라서 모든 이벤트는 캔버스에서 멈추지 않지만 부모 요소에 대해 생성됩니다.

예를 들어 캔버스에 Background = White 또는 Red를 설정하면 MouseLeftButtonDown을 가져야합니다.

+1

네, 실제로 Background = "Transparent"는 트릭을합니다! 그냥 표준으로 두는 것이 아닙니다. 답장을 보내 주셔서 감사합니다! – Citroenfris

+0

미안 해요 - 내 exprimation 꽤 불투명했다, 내가 캔버스가 투명하다고 말했다 나는 사실은 그들이 시각적 인 나무 hierachy에서 마우스 이벤트에 대한 투명 사실을 reffering, 그들의 배경 null이 :) –

+0

답장을 보내 주셔서 감사합니다 그러나 , 그것은 내가 이것으로 고투하고있는 바보 같이 보인다! 정말 간단합니다. P. – Citroenfris

3

사용자 이미지는 캔버스를 숨기므로 이미지를 선언 한 후 XAML에서 캔버스를 선언하므로 UI에서 앞에 캔버스가 표시되고 클릭이 적용됩니다.

팁 : 캔버스 배경색을 지정하면 UI에서 렌더링되는 방식을 볼 수 있습니다. 당신이 그렇게하면 이미지가 그것들을 숨기는 것을 볼 수 있습니다.

+0

나를 위해 작동 중입니다. – Erez

+1

맞아요, 작동하지 않습니다. 내가해야만하는 전부는 Canvasses를 투명하게 놓았습니다. 그렇지 않으면 클릭하면 색이 채워지지 않으므로 아무런 효과가 없습니다. 팁은 나를 많이 도왔다. – Citroenfris