2011-12-06 46 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线程下运行 –