2009-05-04 6 views
1

WPFのItemsControlは、フォーカスがあると判断し、ユーザーがTabキーまたはAltキーを押すとフォーカス矩形を表示します。なぜ、ItemsControlは、その親がフォーカスされているときにフォーカス矩形を表示しますか?

しかし、にフォーカスがない場合でも、最近、ItemsControlにフォーカス矩形が表示されました。 - その親の1つが行いました。 ItemsControlは、にフォーカスした別の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 question)のIので、決してフォーカス矩形を表示するためのフォーカスがないコントロールが必要です。

私はまだWPFの周りで自分のやり方を学んでいますが、明らかに私はまだ十分ではない、またはこれは私を混乱させないでしょう。私が理解しやすくするために、2つの質問:

  1. なぜそれが実際にフォーカスがないときのItemsControlがフォーカス矩形を表示するが、その親コン​​トロールの1はありませんでしょうか?この機能の理由は何ですか? WPFの仕組みや哲学についての十分な理解はまだありません。
  2. はどのように機能しますか? ItemsControlはフォーカス矩形を表示する必要があると判断するメカニズムは何ですか?

答えて

1

ItemsControlにフォーカスがないことは確かですか?それが焦点矩形を描画している場合、それはすべきです。ビジュアルツリーの上位のコントロールに焦点が当てられているという理由だけで、その子の1つにも焦点が当てられていないわけではありません。理由を理解するには、WPFで「論理的な焦点」と「キーボードフォーカス」の違いを学んでください。 MSDNにexaustive explanationがあります。

0

これは設計によるものだと思います。私の理解では、フォーカスは親コントロールから継承され、ビジュアルツリーの下で動作します。 itemscontrolの親の視覚的なスタイルを調べ、itemscontrolそのものを調べてxamlの視覚的なツリーで何が起こっているのか調べてみてください。それは何が起こっているかについての手がかりを明らかにするはずです。また、フォーカスやitemscontrolなどの情報のためのGoogleといくつかの他のサイトを検索することができます。そこに私はそれを説明する方法よりも明確なすべての作品をどのように詳細を与えるいくつかの他の情報があります。 itemscontrolをクリックしてから別の場所をクリックし、親をクリックするとどうなりますか?フォーカスの変化はありますか?また、フォーカスをオーバーライドするカスタムクラスを作成して、コントロールが同じようにフォーカスを表示しないようにすることもできます。 (かなり)簡単にする必要があります。特定のサイト/ブログの情報があるかもしれません。

関連する問題