2012-06-28 8 views
5

Tôi đang làm việc trên một dự án WPF, và tôi đang cố gắng để bắn một sự kiện mỗi khi một số userControls hoạt động hoặc không hoạt động.Làm thế nào để biết nếu UserControl đang hoạt động khác hơn là sử dụng IsFocused

Những userControl này có nhiều điều khiển khác bên trong chúng.

Tôi đã cố gắng để đạt được điều này bằng cách sử dụng các sự kiện userControl GotFocusLostFocus, nhưng những sự kiện này không hoạt động theo cách tôi cần vì userControl mất tiêu điểm khi tôi làm việc với các điều khiển bên trong nó.

Vì vậy, câu hỏi của tôi là: Có cách nào để mantain một UserControl như Active khi người dùng làm việc với các điều khiển bên trong của nó, và, khi người dùng đi vào một UserControl đầu tiên này được Inactive ???

Cảm ơn bạn trước.

+2

Bạn đã thử [UIElement.IsKeyboardFocusWithinChanged Event] (http://msdn.microsoft.com/en-us/library/system.windows.uielement.iskeyboardfocuswithinchanged) chưa? – LPL

+0

@ LPL, tôi vừa thử nó, nhưng khi điều khiển người dùng được hiển thị sự kiện tăng vô cùng – Dante

+2

@ Dante Bạn có đang sử dụng điểm ngắt không? Một điểm dừng sẽ làm cho 'UserControl' mất tiêu điểm, sau đó Continuing sẽ làm cho nó lấy nét một lần nữa, gây ra vòng lặp vô hạn. – Rachel

Trả lời

2

Tôi có thể giải quyết được sự cố của mình cảm ơn nhận xét của @LPL và @Rachel.

Tôi đã phải sử dụng sự kiện UIElement.IsKeyboardFocusWithinChanged và nó hoạt động hoàn hảo. Lúc đầu, tôi gặp vấn đề là phương thức gọi lại đã được tăng lên vô hạn, nhưng vấn đề thực tế là tôi đã hiển thị MessageBox mỗi khi sự kiện IsKeyboardFocusWithinChanged được nâng lên, do đó, điều này đã làm thay đổi thuộc tính IsKeyboardFocusWithin và nó tạo ra một vòng lặp vô hạn. Nhưng nhờ lời khuyên của Rachel, tôi có thể tìm ra cách giải quyết nó.

0

Tôi không chắc nhưng một workarounnd có thể bị mất tiêu điểm của kiểm soát kiểm soát nếu điều khiển đã tập trung là con của kiểm soát của bạn nếu nó được viết chỉ trở lại nếu nó không phải là chỉ cần viết logic những gì bạn muốn mất tập trung kiểm soát của bạn. Tôi hy vọng điều này sẽ giúp