2011-06-23 36 views
6

Cách tốt nhất để phát hiện trạng thái nhàn rỗi cho ứng dụng Silverlight là gì? Tôi đã đọc khá một vài bài viết trên mạng và hiện tại chúng là dành cho các ứng dụng wpf/mobile, v.v.phát hiện trạng thái không hoạt động silverlight 4 application

Tôi đã tạo ra DispatcherTimer khóa màn hình sau 5 phút và có vẻ như tôi sẽ phải mỗi widget trong mỗi màn hình (ứng dụng của tôi có khoảng 4-5 màn hình) và thêm một mousebuttondown hoặc mouseenter eventhandler để thiết lập lại bộ đếm thời gian này. Điều này dường như không hiệu quả nhưng chỉ cần thêm trình xử lý vào layroot cũng không giúp ích gì.

Bất kỳ đề xuất hữu ích nào?

Cảm ơn

Trả lời

5

Bạn không cần phải sửa đổi mọi điều khiển. Nếu bạn thêm đoạn mã sau khi khởi động:

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

Với xử lý sự kiện sau đây:

private void RootVisual_KeyDown(object sender, KeyEventArgs e) 
{ 
    idle = false; 
} 

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

đâu idle là biến bạn sử dụng trong sự kiện DispatcherTimerTick của bạn để kiểm tra xem mọi thứ đang xảy ra hay không.

Khi sự kiện bong bóng lên cây, thao tác này sẽ hoạt động đối với tất cả các điều khiển của bạn.

+0

hoạt động hoàn hảo. Cảm ơn – user642770

+0

@ user64270: Miễn là bạn không mở ChildWindows lâu hơn thời gian chờ nhàn rỗi của bạn. – AnthonyWJones

2

Sự kiện được xử lý sẽ không phát huy tối đa quyền kiểm soát gốc. Thay vào đó, bạn nên sử dụng phương thức AddHandler với handledEventsToo = true.

Các vấn đề liên quan