WPF's ItemsControl will display a focus rectangle when it thinks it has focus and the user presses Tab or Alt.
But I recently had an ItemsControl display a focus rectangle even though it did not have focus -- one of its parents did. The ItemsControl was inside a UserControl, which was inside another UserControl that did have focus. Something like this:
<!-- 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>
Or, to show the nesting visually:
+---------------------------------------------------+
| UserControl1 (has focus) |
| |
| +-----------------------------------------------+ |
| | UserControl2 | |
| | | |
| | +-------------------------------------------+ | |
| | | ItemsControl (shows focus rectangle) | | |
It took me a while (and a StackOverflow question) to figure out where the focus rectangle was coming from, because I never expected a control that didn't have focus to show a focus rectangle.
I'm still learning my way around WPF, and obviously I don't know enough yet, or this wouldn't have confused me. Two questions to help me understand:
Are you sure that the ItemsControl doesn't have focus? If it's drawing a focus rect, it should. Just because a control higher in the visual tree is focused, doesn't mean that one of its children is not also focused. To understand why, make sure you have learned the difference between "logical focus" and "keyboard focus" in WPF. There is an exaustive explanation on MSDN.