Вам не нужно изменять каждый элемент управления.Если при запуске добавить следующий код:
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
событие, чтобы проверить, происходит ли что-то или нет.
Поскольку события всплывают на дереве, это должно работать для всех ваших элементов управления.