2011-12-06 2 views
2

다음과 같은 상황이 있습니다. 사용자가 이미지 위에 마우스를 놓습니다.Silverlight 4 : Mouseenter 이벤트를 지연시키는 방법

사용자가 특정 시간 동안 해당 이미지 위에 마우스를 올려 놓으면 ex. 2 초 다음에만 진행해야합니다

추가로 mouseenter 이벤트 그렇지 않으면 그렇지 않습니다.

나는 이미 http://forums.silverlight.net/t/86671.aspx/1으로 회상했지만 내 경우는 다른 경우입니다.

답변

4

하나의 옵션은 DispatchTimer를 사용하여 마우스의 길이를 결정하는 것입니다.

bool isMouseOverImage = false; 
public void Image_MouseEnter(object sender, MouseEventArgs e) 
{ 
    this.isMouseOverImage = true; 
    var timer = new System.Windows.Threading.DispatcherTimer(); 
    timer.Interval = TimeSpan.FromSeconds(2); 
    timer.Tick += (object timerSender, EventArgs timerArgs) => 
    { 
    if(this.isMouseOverImage) 
    { 
     // write your code 
    } 

    // stop the timer 
    timer.Stop();  
    }; 
    timer.Start(); 
} 

public void Image_MouseLeave(object sender, MouseEventArgs e) 
{ 
    this.isMouseOverImage = false; 
} 

여러 이미지가있는 경우, 재사용 가능한 Behavior를 작성하고 각 이미지에 첨부해야한다. 도움이된다면 코드를 정의 할 수 있습니다.

+0

예. 성공했습니다. backgroundworker 또는 일반 스레드를 사용하는 것과 같은 다른 솔루션도 있지만 가장 안전한 방법은 기본 UI 스레드에서 실행되는 DispatcherTimer입니다. –

관련 문제