2010-08-03 48 views
4

在Silverlight中檢測用戶的最簡單方法是不活動的? 即一段時間沒有鼠標輸入和鍵盤輸入。檢測閒置Silverlight應用程序

我試着監視鼠標事件,鍵盤事件和根視覺的焦點事件,但它似乎不夠。 例如,可能會打開一個彈出窗口,這些事件不會到達根目錄。

也許javascript解決方案?

然後出現另一個問題。當應用程序閒置時,我希望它顯示爲灰色(就像ChildWindow行爲一樣)。即使現在有一個打開的ChildWindow或一個簡單的Popup,我也希望它看起來像這樣。

回答

0

你確定子窗口不會冒泡嗎?這是一個路由事件......沒有意識到這一點。

如果沒有,只是像創建合同:

ILastActivity : INotifyPropertyChanged 
void Touch(); 
DateTime LastActivity { get; private set; } 

然後,你可以創建一個附加的行爲,一個基類,或使用任何其他機制來簡單地註冊您的看法的關鍵事件。他們都會在觸發時調用「Touch」,並且您的計時器將檢查LastActivity以確定它。可能你也可以用自動化同行做些什麼,值得研究。

+0

問題是ChildWindow沒有出現在'Application.RootVisual'下的可視樹中。 – AnthonyWJones 2010-08-04 08:23:44

+0

理解 - 因此,子窗口也可以與之通信的合約,以廣播更新。 – 2010-08-04 17:20:53