2011-12-06 17 views
2

私は次のような状況があります。Silverlight 4:Mouseenterイベントを遅らせる方法

ユーザーが特定の時間前にその画像にマウスを置いている場合。 2秒後に進む必要があります。

マウスセンターイベントでは、それ以外の場合は実行しないでください。

私はすでにhttp://forums.silverlight.net/t/86671.aspx/1に回想しましたが、私のように見えるケースは異なります。

答えて

4

1つの方法は、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です –

関連する問題