在UserControl上删除焦点矩形

56

我有一个设置了Focusable="True"的WPF用户控件,它是窗口中唯一可获得焦点的控件。

每当用户按Tab键或Alt键(尤其是当他们Alt+Tab切换到另一个应用程序时),我的用户控件就会出现一个虚线边框,也称为焦点矩形。焦点矩形会一直保留到窗口关闭。

如何防止我的用户控件显示这个焦点矩形?

编辑

事实证明焦点矩形实际上并不是由我的用户控件显示的。我的可获得焦点的用户控件包含另一个用户控件,而该用户控件又包含一个ItemsControl,正是ItemsControl显示了焦点矩形。

当我在ItemsControl中添加了FocusVisualStyle="{x:Null}"时,焦点矩形消失了。


1
你确定是UserControl而不是其中一个元素获取了矩形吗?我在快速测试中无法为纯UserControl复制这个问题。 - Mikko Rantanen
有趣。我会去看看的。 - Joe White
Mikko,感谢您让我找对了方向 - 请看编辑。 - Joe White
1个回答

77

如果您希望在任何情况下都不显示焦点矩形,则可以将FocusVisualStyle设置为null。

<MyControl FocusVisualStyle="{x:Null}" />

我认为应该放在具有Focusable="True"属性的UserControl上。如果是这样,它没有任何效果。一旦按下Alt键,它仍然显示虚线矩形。 - Joe White
1
没关系。当我找到正确的控件放置它时,它就起作用了。请参见编辑。 - Joe White
我已经尝试了很长时间来解决这个问题。谢谢。 - Phil Rogers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接