WPFのItemsControlは、フォーカスがあると判断し、ユーザーがTabキーまたはAltキーを押すと、フォーカス長方形を表示します。
しかし、最近、ItemsControlにフォーカスがないにもかかわらず、フォーカス長方形を表示させました。その親の1つはフォーカスを持っていました。ItemsControlはUserControl内にあり、UserControlはフォーカスを持っていた別のUserControl内にありました。このようなもの:
<!-- UserControl1.xaml; this is the control that has focus -->
<UserControl x:Class="UserControl1" Focusable="True" ...>
<UserControl2/>
</UserControl>
<!-- UserControl2.xaml -->
<UserControl x:Class="UserControl2">
<ItemsControl .../>
</UserControl>
または、ネストを視覚的に表示するには:
+---------------------------------------------------+
| UserControl1 (has focus) |
| |
| +-----------------------------------------------+ |
| | UserControl2 | |
| | | |
| | +-------------------------------------------+ | |
| | | ItemsControl (shows focus rectangle) | | |
フォーカスの長方形を表示するためのフォーカスのないコントロールを予期していなかったため、フォーカスの長方形がどこから来ているのかを理解するのにしばらく時間がかかりました(そしてStackOverflowの質問)。
私はまだWPFの使い方を学んでいますが、明らかにまだ十分に理解していません。そうでなければ、混乱することはありません。私が理解するのに役立つ2つの質問:
- ItemsControlが実際にはフォーカスを持っていないのに、親コントロールの1つがフォーカスを持っているのに、なぜフォーカス長方形を表示するのですか?この機能の理由は何ですか?(テンプレートやビジュアルツリーに関係するものがあると確信していますか?-WPFのメカニズムと哲学についてまだ十分に理解していません。)
- これはどのように機能しますか?ItemsControlがフォーカス長方形を表示するかどうかを決定するために使用するメカニズムは何ですか?