【发布时间】:2009-05-04 13:35:21
【问题描述】:
当 WPF 的 ItemsControl 认为它有焦点并且用户按下 Tab 或 Alt 时,它会显示一个焦点矩形。
但我最近有一个 ItemsControl 显示一个焦点矩形,即使它没有焦点——它的一个父项有。 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 question)才弄清楚焦点矩形的来源,因为我从没想过没有焦点的控件会显示焦点矩形。
我仍在学习如何使用 WPF,显然我还不够了解,否则这不会让我感到困惑。两个问题可以帮助我理解:
- 为什么 ItemsControl 在它实际上没有焦点时显示一个焦点矩形,但它的父控件之一有?这个功能的原因是什么? (我确定有一个——可能与模板或可视化树有关?——我只是对 WPF 机制和哲学还没有足够深入的了解。)
- 如何这是如何工作的? ItemsControl 使用什么机制来决定它应该显示一个焦点矩形?
【问题讨论】:
标签: wpf focus itemscontrol focusvisualstyle