Обнаружение состояния простоя Silverlight 4 приложения - PullRequest
6 голосов
/ 23 июня 2011

Какой лучший способ определения состояния простоя для приложения silverlight? Я прочитал довольно много статей в сети к настоящему времени, и обычно они либо для wpf / мобильных приложений и т. Д.

Я создал DispatcherTimer, который блокирует экран через 5 минут, и кажется, что мне придется перейти к каждому виджету на каждом экране (мое приложение имеет около 4-5 экранов) и добавить обработчик событий mousebuttondown или mouseenter для сброса этого таймер. Это не кажется эффективным, но простое добавление обработчика в корень лайка также не помогает.

Какие-нибудь полезные предложения?

Спасибо

Ответы [ 2 ]

5 голосов
/ 23 июня 2011

Вам не нужно изменять каждый элемент управления.Если при запуске добавить следующий код:

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событие, чтобы проверить, происходит ли что-то или нет.

Поскольку события всплывают на дереве, это должно работать для всех ваших элементов управления.

2 голосов
/ 14 марта 2012

Обработанные события не перейдут к корневому контролю.Вместо этого вы должны использовать метод AddHandler с handledEventsToo = true.

...