2012-06-28 2 views
5

WPFプロジェクトで作業中で、一部のuserControlsがアクティブまたは非アクティブになるたびにイベントを発生させようとしています。UserControlがIsFocusedを使用する以外にアクティブかどうかを確認する方法

これらのuserControlsには、他の多くのコントロールがあります。

私はuserControlイベントGotFocusLostFocusを使用してこれを達成しようとしましたが、内部のコントロールを操作するときにuserControlがフォーカスを失うので、これらのイベントは必要な方法では機能しません。

だから、私の質問は:は、ユーザーがそれの内部統制と連携しながら、Activeとしてユーザーコントロールをmantainする方法はあります、そして、ユーザーが別のユーザーコントロールに行くときは、この最初のものはInactiveを取得します?

ありがとうございます。

+2

[UIElement.IsKeyboardFocusWithinChangedイベント](http://msdn.microsoft.com/en-us/library/system.windows.uielement.iskeyboardfocuswithinchanged)を試しましたか? – LPL

+0

@LPL、私はそれを試しましたが、ユーザーコントロールが表示されたときにイベントが無限に発生します – Dante

+2

@Danteブレークポイントを使用していますか?ブレークポイントは、 'UserControl'がフォーカスを失うようにします。続いて、フォーカスを再び獲得させ、無限ループを引き起こします。 – Rachel

答えて

2

@LPLと@Rachelのコメントに感謝します。

私はイベントUIElement.IsKeyboardFocusWithinChangedを使用する必要があり、それは完全に機能しました。

最初は私がコールバックメソッドが無限に提起されていたということでした問題があったが、実際の問題は、私はイベントIsKeyboardFocusWithinChangedが発生するたびにMessageBoxを見せていたということでしたので、これはIsKeyboardFocusWithinプロパティが変化したことに起因し、それ無限ループを作成しました。しかし、レイチェルの助言のおかげで、私はそれを解決する方法を理解することができました。

0

私は確信していますが、フォーカスが得られたコントロールがコントロールの子である場合は、コントロールチェックのフォーカスが失われている可能性があります。あなたのコントロールのフォーカスを失った。これが助けてくれることを願っています

関連する問題