2011-06-23 20 views
6

Silverlightアプリケーションのアイドル状態を検出する最も良い方法は何ですか?私は今、ネットでかなりの記事を読んでおり、通常はwpf /モバイルアプリなどのためのものです。アイドル状態検出silverlight 4アプリケーション

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

参考にしてください。

ありがとうございました

答えて

5

すべてのコントロールを変更する必要はありません。次のイベントハンドラでは

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

idleあなたは物事が起こったりしていないかどうかを確認するためにあなたの DispatcherTimer Tickイベントで使う変数です
private void RootVisual_KeyDown(object sender, KeyEventArgs e) 
{ 
    idle = false; 
} 

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

あなたは、起動時に以下のコードを追加した場合。

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

+0

完全に機能しました。ありがとう – user642770

+0

@ user64270:あなたのアイドルタイムアウトより長くChildWindowsを開いていない限り。 – AnthonyWJones

2

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

関連する問題