空闲状态检测silverlight 4应用程序

时间:2011-06-23 09:25:32

标签: silverlight python-idle dispatchertimer

检测Silverlight应用程序的空闲状态的最佳方法是什么?我现在已经在网上阅读了不少文章,通常它们都是针对wpf /移动应用程序等。

我创建了一个DispatcherTimer,它会在5分钟后锁定屏幕,似乎我必须在每个屏幕中找到每个小部件(我的应用程序有大约4-5个屏幕)并添加一个mousebuttondown或mouseenter eventhandler来重置这个计时器。这似乎没有效率,但只是将处理程序添加到layroot也没有帮助。

有用的建议吗?

由于

2 个答案:

答案 0 :(得分:5)

您无需修改​​每个控件。如果在启动时添加以下代码:

Application.Current.RootVisual.MouseMove += new MouseEventHandler(RootVisual_MouseMove);
Application.Current.RootVisual.KeyDown += new KeyEventHandler(RootVisual_KeyDown);

使用以下事件处理程序:

private void RootVisual_KeyDown(object sender, KeyEventArgs e)
{
    idle = false;
}

private void RootVisual_MouseMove(object sender, MouseEventArgs e)
{
    idle = false;
}

idle是您在DispatcherTimer Tick事件中使用的变量,用于检查事情是否正在发生。

当事件冒泡树时,这应适用于所有控件。

答案 1 :(得分:2)

处理的事件不会冒泡到根控制。相反,您应该将AddHandler方法与handledEventsToo = true一起使用。