6

Silverlightアプリケーションのアイドル状態を検出するための最良の方法は何ですか?私はこれまでにネット上でかなりの数の記事を読みましたが、通常はwpf/モバイルアプリなどを対象としています。

5分後に画面をロックするDispatcherTimerを作成しましたが、すべての画面のすべてのウィジェットに移動し(アプリケーションには、約4〜5の画面があります)、このタイマーをリセットするには、mousebuttondownまたはmouseenterイベントハンドラーを追加する必要があるようです。これは効率的ではないようですが、layrootにハンドラーを追加するだけでも役に立ちません。

役立つ提案はありますか?

ありがとう

4

2 に答える 2

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

イベントがツリーをバブルアップすると、これはすべてのコントロールで機能するはずです。

于 2011-06-23T09:35:57.897 に答える
2

処理されたイベントは、ルート制御にバブルアップしません。代わりに、。を指定したAddHandlerメソッドを使用する必要がありますhandledEventsToo = true

于 2012-03-13T22:04:29.083 に答える