[解決済み】WPFとイニシャルフォーカス
質問
WPFアプリケーションの起動時に、何もフォーカスが当たらないようなのですが。
これは本当に不思議なことです。私が使用した他のすべてのフレームワークは、あなたが期待したとおりに、タブ順序の最初のコントロールに最初のフォーカスを置きます。しかし、私のアプリだけでなく、WPFであることを確認しました。新しいウィンドウを作成して、そこにテキストボックスを置き、アプリを実行すると、テキストボックスをクリックするか、Tabキーを押すまで、テキストボックスにフォーカスがありません。うっそー。
私の実際のアプリは、単なるテキストボックスよりも複雑です。UserControlsの中にUserControlsを何層にも重ねています。これらのUserControlsの1つは、Focusable="True"とKeyDown/KeyUpハンドラを持っており、ウィンドウが開くとすぐにフォーカスを持つようにしたいのです。私はまだWPFの初心者ですが、これを行う方法を見つけるのに苦労しています。
アプリを起動して Tab キーを押すと、フォーカスがフォーカス可能なコントロールに移動し、私の望むように動作し始めます。しかし、ユーザーがウィンドウを使い始める前にTabキーを押す必要があるのは困ります。
FocusManager.FocusedElement を使ってみましたが、どのコントロール(トップレベルの Window か、フォーカス可能なコントロールを含む親コントロールか、フォーカス可能なコントロール自体か)に設定すればよいのか、何を設定すればよいのかよくわかりません。
ウィンドウが開くと同時に、深くネストしたコントロールに初期フォーカスを持たせるには、どうしたらよいでしょうか。あるいは、タブ順序で最初のフォーカス可能なコントロールにフォーカスするのが良いですか?
解決方法は?
思い立って、Reflector で Focusable プロパティが使われている場所を調べてみたところ、この解決策にたどり着きました。Window のコンストラクタに次のコードを追加するだけです。
Loaded += (sender, e) =>
MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
これは、タブ順序の最初のコントロールが自動的に選択されるので、どのウィンドウにもドロップしてJust Workできる一般的なソリューションと言えます。
関連
-
[解決済み] WPFのWPFFontCache Serviceの用途は何ですか?WPFFontCache_v0400.exeは、このexeが実行されている間、常に100 %のCPUを消費しています、なぜですか?
-
[解決済み] WPFでテキストボックスが数値入力しか受け付けないようにするにはどうしたらいいですか?
-
[解決済み] WPFテキストボックスの多行化
-
[解決済み] WCFとWPFの違いは何ですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] StackPanelの子パネルが下方向に最大限のスペースを埋めるようにするには?
-
[解決済み】ListBox vs. ListView - データバインディングのための選択方法
-
[解決済み】Visibility.CollapsedとVisibility.Hiddenの違いについて
-
[解決済み】WPFデータグリッドの下部に空の行が表示される。
-
[解決済み】WPFとイニシャルフォーカス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] WCFとWPFの違いは何ですか?
-
[解決済み] WPFのTextBlockでテキストを複数行に表示させるには?
-
[解決済み] XAMLで名前が名前空間に存在しないエラーが発生する
-
[解決済み】INotifyPropertyChangedとViewModelのDependencyPropertyの比較
-
[解決済み】WPFのコントロールが利用可能なスペースを埋めるようにするにはどうすればいいですか?
-
[解決済み】ListBox vs. ListView - データバインディングのための選択方法
-
[解決済み】WPFでシンプルな(と思う)横線?
-
[解決済み】デザインタイムのDataContextをWindowに設定すると、コンパイラーエラーが発生する?
-
[解決済み】WPFデータグリッドの下部に空の行が表示される。
-
[解決済み】WPFとイニシャルフォーカス