2011-12-06 84 views

回答

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或普通線程,但最安全的方式是DispatcherTimer,因爲它在主UI線程下運行 –