2010-04-15 9 views
4

WPF의 이미지에서 MouseDown 이벤트 및 MouseUp 이벤트 만 찾을 수 있습니다. 일부 이미지, 마우스 이동 및 일부 다른 이미지에서 MouseUp 이벤트가 발생하면 일부 문제가 발생합니다. 이 문제를 해결하는 데 사용할 수있는 다른 이벤트가 있습니까? Button 요소의 MouseClick 이벤트와 유사합니다.WPF : 이미지 클릭 이벤트

답변

9

정말로 이미지를 사용해야하는 경우 "클릭"을 확인하기 위해 할 수있는 몇 가지 방법이 있습니다.

  1. 두 이벤트 사이의 시간을 확인하십시오. 임계 값보다 작 으면 마우스를 클릭으로 간주하십시오. 마우스 다운 이벤트의 시간을 저장해야합니다.

  2. 두 이벤트의 sender이 같은지 확인하십시오. 다시 마우스 다운 이벤트의 sender을 저장해야합니다.

또한 눌렀다 놓은 왼쪽 버튼인지 확인할 수도 있습니다.

두 가지를 결합 :

private DateTime downTime; 
    private object downSender; 

    private void Image_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     if (e.LeftButton == MouseButtonState.Pressed) 
     { 
      this.downSender = sender; 
      this.downTime = DateTime.Now; 
     } 
    } 

    private void Image_MouseUp(object sender, MouseButtonEventArgs e) 
    { 
     if (e.LeftButton == MouseButtonState.Released && 
      sender == this.downSender) 
     { 
      TimeSpan timeSinceDown = DateTime.Now - this.downTime; 
      if (timeSinceDown.TotalMilliseconds < 500) 
      { 
       // Do click 
      } 
     } 
    } 

실제로 당신이 할 수있는 세 번째 일이있다 : 마우스 위치를 확인합니다. 위치 저장

private Point downPosition; 

:

this.downPosition = e.GetPosition(sender as Image); 

다음은 허용 오차 값을 다시 한 MouseUp 이벤트에 확인.

4

이미지 만 원하거나 실제로 이미지가있는 버튼을 컨텐츠로 사용 하시겠습니까? 이미지가있는 버튼에는 클릭 이벤트가 발생합니다.