关注我想要的风格TabItem
的‘焦点矩形’。我了解到我可以使用FocusVisualStyle
来做到这一点。问题是FocusVisualStyle
creates a sepearate visual tree for an adorner that is drawn on top of the control。我使用复杂的半透明控件和阴影效果,并且我需要显示下的某个元素的一部分的矩形。绘制一个焦点矩形,只有当控制接收通过键盘
我在MSDN上发现,我可以使用IsKeyboardFocused
combined with trigger实现我需要什么。然而further research已显示this is not correct,因为:
键盘焦点是指当前正在接收键盘输入的元素。这并不意味着焦点是通过键盘导航设置的。
其中一个可能的解决方法可能是:
你可以听KEY_DOWN事件来检查导航键是否被按下。 WPF控件在内部执行此操作以显示FocusVisualStyle。
有没有其他更简单的方法来实现我想要做的?我并不是真的在创建代码,监听事件并处理所有这些许多不同的导航键和快捷键。
所以我仍然需要使用代码'TabItem',对吧?除了使用代码之外,还有其他方法吗? – Paya 2011-03-20 18:09:42
@Paja - 不幸的是,是的。您需要某种代码隐藏来检查MostRecentInputDevice属性并挂接事件处理程序。 – CodeNaked 2011-03-20 19:45:53
@Paja - 为了澄清,你不需要在TabItem中“隐藏”代码(即你不必创建派生类)。您可以使用[附加行为](http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx)。 – CodeNaked 2011-03-20 20:12:49