問題タブ [focusmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
700 参照

wpf - フォーカスに干渉するWPF FocusManager

グリッドがあり、グリッドで最初の要素をフォーカスするように設定しています:

ウィンドウが開くと、正しいコントロールがフォーカスされます。

しかし、フォーム全体をタブで移動すると、上記のフォーカスされたフィールドにフォーカスがあるはずですが、ウィンドウのどこにもカーソルが表示されません。

もう一度タブを押すと、選択する必要があるコントロールの後にコントロールが選択されます。

グリッドから focumanager 属性を完全に削除すると、すべてのコントロールを正しい順序で正しくタブ移動できます。

さらに奇妙なことに、focusmanager 属性を残して最初のテキスト ボックスをクリックし、フォーム全体にフォーカスすると、他のコントロールと同じようにテキスト ボックスが選択されます。

何かアイデアがありましたら、お役に立てれば幸いです。

ありがとう

0 投票する
1 に答える
3872 参照

wpf - Xamly キーボード フォーカスを DataGridTemplateColumn セルの要素に設定しますか?

DataGridTemplateColumn.CellEditing DataTemplate に設定しました。セル編集がテンプレートを読み込んで表示するときに、テンプレート内の特定のコントロールにキーボードフォーカスを与える必要があります。

次の例を考えてみましょう。編集モードにすると、テキスト ボックスはキーボード フォーカスではなくなります。


0 投票する
2 に答える
7870 参照

wpf - ControlTemplate内のコントロールにフォーカスを設定する(パート2)

確かに最も一般的なWPF要件の1つでなければならないことに困惑しています。この質問を読みましたが、ソリューションの実装が機能しません。

ルックレスコントロールのマークアップは次のとおりです。

CustomControlのインスタンスを含むウィンドウのマークアップは次のとおりです。

そして、これがコードビハインドです:

Window1がロードされると、テキストボックスは緑色に変わります(トリガーが機能することを示します)が、フォーカスはテキストボックスではなくCCtlに残ります。間違いなく、これは次のデータエラーを表示する出力と関係があります。

参照'ElementName=myTextBox'とのバインディングのソースが見つかりません。BindingExpression :(パスなし); DataItem = null; ターゲット要素は'CustomControl'(Name ='CCtl'); ターゲットプロパティは「FocusedElement」(タイプ「IInputElement」)です。

このエラーが表示される理由がわかりません。感謝の気持ちを込めて受け取ったポインタ。

0 投票する
2 に答える
1175 参照

wpf - RibbonButton.ClickでDataGrid.LostFocusを上げるにはどうすればよいですか?

次のコードはToolBarを使用し、DataGrid.LostFocusを正しく引き起こします(コマンドが実行される前に、コミットされていない行編集をコミットします)。

ただし、現在、リボン(oct10リリース)を使用して同じことを実行しようとしていますが、次の場合、DataGrid.LostFocusが発生しません。

リボンを使用してこのイベントを発生させるにはどうすればよいですか?IsFocusScopeを他のレベル(Ribbon、RibbonTab、RibbonButton)に移動してみましたが、役に立ちませんでした。

0 投票する
1 に答える
1849 参照

wpf - 子のいずれかにフォーカスがあるかどうかに基づいて、カスタムコントロールのスタイルを設定するにはどうすればよいですか?

標準のMDIアプリケーションのウィンドウのように動作する特殊なノードを持つカスタムキャンバスがあります。望ましい動作は、「ウィンドウ」の子コントロールのいずれかにフォーカスがある場合、その「ウィンドウ」がアクティブであると言われることです。

これで、IsFocusedプロパティはカスケードされていないように見えます。つまり、子コントロールにフォーカスがある場合、そのコンテナーも「フォーカス」に設定されていないため、使用できません。同じ理由で、IsFocusedプロパティをコンテナに設定することはできません。これは、子からIsFocusedプロパティを盗むと思われるためです。

私の唯一の考えは、HasChildWithFocusなどと呼ばれる新しいDPを作成し、コードビハインドでバブルイベントをリッスンしてそのフラグを設定することです。それが最善の方法かどうかはわかりません。(これは、添付プロパティ/添付動作の組み合わせとして実装する場合があります。)

しかしもちろん、私たちが単にコントロールに尋ねることができれば、はるかに良いでしょう「ねえ...あなたまたはあなたの子供たちの誰かが焦点を合わせていますか?」

それで、あなたはできますか?

0 投票する
2 に答える
19768 参照

java - Java JFrame GUI で requestFocus を使用するにはどうすればよいですか?

課題を与えられましたが、Java はまったくの初心者です (C++ と Python で 2 年間プログラミングしています)。

そこで、私たちは GUI を行っており、基本的に JFrame を拡張し、いくつかのフィールドを追加しました。

「テキスト 1」と「テキスト 2」という名前のフィールドがあるとします。ユーザーがテキスト1にカーソルを置いてEnterキーを押すと、フォーカスがテキスト2に移動します。追加しようとしました

しかし、それはまったく機能しません。

requestFocus は推奨されていないことに気付きました。代わりに、requestFocusWindows を使用する必要があります。しかし、私もそれを試しました。いくつかの読書では、キーボードアクションとリスナーを実行する必要があるようです? でも先生は1行だけでいいって言ってた…

0 投票する
2 に答える
822 参照

binding - HierarchicalDataTemplate での FocusedElement のバインディング

HierarchicalDataTemplate 内のコントロールにフォーカスしようとしています。残念ながら、テンプレート内のコントロールにバインドしようとすると失敗します。これが私のコードです:

ツリービュー アイテムがフォーカスを取得するとトリガーが起動しますが、{Binding ElementName=EditBox} は失敗し、「参照 'ElementName=EditBox,... でバインディングのソースが見つかりません」というメッセージが表示されます。

このバインディングを修正するにはどうすればよいですか? または、HierarchicalDataTemplate 内でコントロールのフォーカスを設定するより良い方法はありますか?

助けてくれてありがとう。

0 投票する
2 に答える
7621 参照

c# - WPF FocusNavigationDirection、MoveFocus、矢印キー

私は単純なアプリケーション (テスト用に 6 つのボタン (3 つの行が 2 行) を持つグリッド) を持っており、左矢印キーと右矢印キーを次のように処理しています。

残念ながら、フォーカスは常に FocusNavigationDirection で指定された方向とは反対の方向に移動するように見えるため、これは期待どおりに動作しません。

なぜこれになるのかについて何か考えはありますか?MSDNのドキュメントでは、「の左側」がどのように定義されているかについて、少しあいまいです。

必要に応じて、各ボタンのタブ ストップを 1 ~ 6 として定義しました。

0 投票する
6 に答える
18424 参照

wpf - このLostFocus/LostKeyboardFocusの問題をどのように解決しますか?

わかりました。IsEditingプロパティを持つコントロールがあります。これは、引数のために、通常はテキストブロックであるデフォルトのテンプレートを持っていますが、IsEditingがtrueの場合、インプレース編集のためにテキストボックスにスワップします。これで、コントロールがフォーカスを失ったときに、まだ編集中の場合は、編集モードを終了して、TextBlockテンプレートにスワップバックすることになっています。かなり簡単ですよね?

Windowsエクスプローラーまたはデスクトップでファイルの名前を変更する動作を考えてみてください(これは私が知っているのと同じことです...)それが私たちが望む動作です。

問題は、別のウィンドウ(またはFocusManagerである要素)に切り替えると、コントロールに論理フォーカスがあるためLostFocusが起動せず、機能しないため、LostFocusイベントを使用できないことです。

代わりにLostKeyboardFocusを使用すると、「その他のFocusManager」の問題は解決しますが、新しい問題が発生します。編集中にテキストボックスを右クリックすると、コンテキストメニューが表示されます。これは、コンテキストメニューにキーボードが含まれているためです。フォーカスすると、コントロールはキーボードフォーカスを失い、編集モードを終了してコンテキストメニューを閉じ、ユーザーを混乱させます。

ここで、メニューが開く直前にLostKeyboardFocusを無視するようにフラグを設定し、LostKeyboardFocusイベントでそのフラグを使用して、編集モードを終了するかどうかを決定しようとしましたが、メニューが開いていて、アプリでは、コントロール自体にキーボードフォーカスがなくなったため(メニューにフォーカスがあった)、コントロールが別のLostKeyboardFocusイベントを取得することはなく、編集モードのままになります。(メニューが閉じたときに、フォーカスがあるものを確認するためのチェックを追加し、コントロールでない場合は手動でEditModeからキックアウトする必要がある場合があります。これは有望なようです。)

だから...誰かが私がこの振る舞いをうまくコーディングする方法を知っていますか?

マーク

0 投票する
2 に答える
805 参照

wpf - フォーカスを設定すると、インスタント編集ができなくなります

テキストボックス付きのWPFUserControlがあります。テキストボックスとその親コン​​トロールの定義方法は次のとおりです。

FocusManager.FocusedElementを設定すると、テキストボックス内にカーソルバーが表示されます。ただし、カーソルバーは点滅しておらず、ユーザーがすぐに入力を開始することはできません。

FocusManager.FocusedElementが設定されていない場合、アプリケーションの起動時に、テキストボックス内にカーソルバーがまったくありません。

これが完全なXAMLです