2011-12-27 9 views
0

タブキーが押されたか、またはユーザーがマウスボタンを押したために が発生した場合にフォーカスイベントが失われたときに、別のコントロール。タブキーが押されたかマウスがクリックされたためにフォーカスが失われたSilverlightが検出されました

これは私が達成したいものです。

私は1行でRadGridViewを持っています。最後の列に数値入力があります。 ユーザーがこのコントロールからタブアウトすると、新しい行がviewmodelのsourcecollectionに追加されます。これにより、自動的にグリッドに新しい行が追加され、次にこの行の最初の列が追加されますフォーカスを持っていて、celledittemplateのドロップダウンリストを開く必要があります。

フォーカスを失うと、新しい行が追加されますが、これはタブを使用してコントロールのフォーカスを解除しても機能しません。また、新しい行の最初の列は選択されていません。何らかの形で が行0の列0にフォーカスを移動します。

+0

トーマス、あなたは私の受け入れられた解決策を減らしました。あなたは自分の解決策を受け入れましたか?あなたは答えを加えるために質問を更新すべきだと思います。 – codeSetter

答えて

2

私はちょっと違う解決策を考え出しました。私はGridviewsのkeydownとkeyupイベントを処理しました。keydownはboolをtrueに、keyupをfalseに設定しました。

実行シーケンスは幸いkeydown、lostfocus、keyup です。フォーカスが失われたイベントでは、ブールが真であることを確認するだけです。 不思議なことに、keyupイベントは常にトリガされるとは限りませんが、lostfocusが であるため、boolもfalseに設定しました。

+0

私はこれがうまくいくと思いますが、もっとエレガントな方法を提案するまで待つべきです。 – codeSetter

+0

私たちが作成している製品はすぐに終了しなければならないので、あなたは正しいです。私は今のところこのようにします。 – Thomas

1

はいトレース可能です。画面上の各フォーカス可能な要素にマウスの上下のイベントを実装していれば。フォーカスが失われるTABキーではない場合、マウスプレビューイベントの上下がどの要素でも発生するかどうかを確認するフラグがあります。

これは、適切な解決策を示唆していない人がいれば回避できます。

関連する問題