當WPF的ItemsControl認爲它具有焦點並且用戶按Tab或Alt時,它將顯示一個焦點矩形。爲什麼ItemsControl的父級重點時會顯示焦點矩形?
但我最近有一個ItemsControl顯示焦點矩形,儘管它沒有焦點 - 其父母之一。 ItemsControl是在一個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),以找出其中的焦點矩形是從哪裏來的,因爲我從來沒有期望一個沒有焦點的控件顯示焦點矩形。
我仍然在學習WPF的方法,顯然我還不夠了解,或者這不會讓我困惑。兩個問題要幫我明白了:
- 爲什麼不ItemsControl中顯示焦點矩形時,它實際上並不具有焦點,但它確實父控件的一個?這個功能的原因是什麼? (我確信有一個 - 可能與模板或可視化樹有關? - 我只是沒有深入瞭解WPF機制和哲學。)
- 如何這樣做的嗎? ItemsControl用什麼機制來決定它應該顯示一個焦點矩形?