大约几天前,我们运行我们的WPF应用程序,我们中的一些人(在几位开发人员的计算机上)发现很多控件在聚焦时有虚线边框,如下所示:
外部控件是
Grid
,其他地方,Border
等也有同样的问题。
在过去的几天里,它已经消失了。今天,我们所有团队都可以看到这个问题。
我们尝试设置元素
FocusVisualStyle="{x:Null}"
,它根本没有任何效果,并且我们找不到哪些更改影响了它。
那么,这个问题与电脑环境有关吗?以及可能是什么原因导致这个奇怪的问题?
更新:
我们刚刚在干净的虚拟机中尝试了我们的应用程序,它可以重现,所以也许这个问题的唯一问题是我们的代码。
由于我们还没有找到导致此问题的相关代码,因此我们不知道上传什么XAML代码来显示此问题。
由于
FocusVisualStyle
不支持从字符串转换,这两个选项都对我有用:
<Grid FocusVisualStyle="{x:Null}" />
或者
<Grid>
<Grid.FocusVisualStyle>
<Style />
</Grid.FocusVisualStyle>
</Grid>
我想这对OP来说没有多大用处,但万一其他人正在解决问题......
我强烈怀疑设置 FocusVisualStyle="{x:Null}" 是答案,但有时可能不清楚可视化树中的哪个控件要设置它。我建议使用 Snoop,窥探应用程序,启用预览,展开预览区域,通过单击可视化树在窥探中重新创建问题,然后在应用程序中重新选择问题区域,如下所示:
然后尝试通过简单地单击值(屏幕截图中的黄色)并删除来删除 FocusVisualStyle。冲洗并重复,直到找到罪魁祸首。视觉树可能与逻辑树不太匹配,但通过反复试验你可以解决它。
在上面的示例中,我发现是 ScrollViewer 导致了我烦人的虚线矩形,而不是我最初假设的画布。
问候大卫
您应该将 FocusVisualStyle 属性设置为 none。
对于
Mahapps.Styles.Button.MetroSquare
按钮,我尝试了以下方法,但没有成功:
IsTabStop
设置为 false
FocusVisualStyle="{x:Null}"
FocusVisualStyle="{x:Null}"
最后,有效的是在按钮上设置
Focusable="False"
。