2
我遇到以下情况:用户将鼠标移到图像上。Silverlight 4:如何延迟Mouseenter事件
如果用户在特定时间内将鼠标停留在该图像上, 2秒然后只有我必须继续
进一步鼠标事件否则不。
我已经拒绝了http://forums.silverlight.net/t/86671.aspx/1但看起来像我的是不同的情况。
我遇到以下情况:用户将鼠标移到图像上。Silverlight 4:如何延迟Mouseenter事件
如果用户在特定时间内将鼠标停留在该图像上, 2秒然后只有我必须继续
进一步鼠标事件否则不。
我已经拒绝了http://forums.silverlight.net/t/86671.aspx/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并将其连接到每个图像。如果这有帮助,我可以定义代码。
是的,它工作。我还有其他解决方案,如使用backgroundworker或普通线程,但最安全的方式是DispatcherTimer,因为它在主UI线程下运行 –