2012-02-29 1 views
0

私は自分のプログラムのための独自のテキストエディタを作ろうとしています。まだテキストを編集することはできません。IsRockboardFocusedは常にOnRender()内にあります。

私のキャレットを表示しようとしたときにうごめきました。

私のOnRender()メソッドでは、IsKeyboardFocusedメソッドを使用して、キーボードフォーカスがあるかどうかを確認します。キーボードフォーカスがある場合は、その場合は先に進んでカーソルを描画します。

私はキーボードでKeyboard.Focus(MyCustomTextEditor)を使って自分のコントロールにフォーカスを合わせ、マウスでクリックすると、GotKeyboardFocusイベントハンドラを使用して傍受すると、フォーカスが正常に渡されたことを示すデバッグメッセージを使用して確認できます。

しかし、私が何をするにしても、IsKeyboardFocused = TrueOnRender()にすることはできません。私はDebug.Print()を冒頭、終わり、中央、そしてOnRender()の中に想像できる場所に置き、結果は常にFalseです。

私の方法はかなり簡単です。私は何が残っていたのか分かりません。これを読んでいただきありがとうございます!

答えて

0

FocusManager.FocusedElementを使用して、コントロールにフォーカスが当てられているときにどの要素がフォーカスされているかを調べてみましたか?それはいくつかの手がかりを与えるはずです。

暗闇の中で、OnRender()が制御負荷の後に再び呼び出されるか、initだけをチェックしていますか?私はLoadedイベント中のコントロールにフォーカスを設定し、後でフォーカスを元に戻すというフォーカスの問題を思い出します。

+0

私はあなたのアイデアを使用して、何が起こっていたのか把握しました。私は 'MyCustomTextEditor'の親要素として' ScrollViewer'を使用していました。私のフォーカスは、 'LostFocus'イベントハンドラで' Keyboard.FocusedElement.ToString() 'を使って確認した' ScrollViewer'へのルーティングを続けていました。私の 'ScrollViewer'は' MyCustomTextEditor'にしか使われていないので、これは本当にいいです。あなたの助けをありがとう! –

関連する問題