如何在聚焦时删除WPF控件周围的虚线

时间:2013-09-16 10:39:44

标签: c# wpf wpf-controls

大约几天前,我们运行了我们的WPF应用程序,我们中的一些人(在几个开发人员的计算机中)发现很多控件在聚焦时都有虚线边框,如下所示:

Capture

外部控件为Grid,而在其他地方,Border和其他人也有同样的问题。

在过去的日子里,它已经消失了。今天,我们所有团队都可以看到这个问题。

我们尝试设置元素FocusVisualStyle="{x:Null}",它根本没有效果,我们无法找到影响它的更改。

那么,这个问题是否与计算机环境有关?什么可能的原因会导致这个奇怪的问题?

更新

我们刚刚在干净的虚拟机中尝试了我们的应用程序,它可以被复制,所以这个问题的唯一要点就是我们的代码。

由于我们没有找到相关代码导致此问题,我们不知道上传什么XAML代码来显示此问题。

5 个答案:

答案 0 :(得分:5)

由于FocusVisualStyle不支持从字符串转换,因此这两个选项对我有用:

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

或者

<Grid>
    <Grid.FocusVisualStyle>
        <Style />
    </Grid.FocusVisualStyle>
</Grid>

答案 1 :(得分:2)

我想这对OP来说没有多大用处,但万一其他人在努力解决问题...

我强烈怀疑设置FocusVisualStyle =&#34; {x:Null}&#34;是答案,但有时可能不明显在视觉树中的哪个控件(s?)设置它。我建议使用Snoop,窥探应用程序,启用预览,展开预览区域,通过单击可视树在snoop中重新创建问题,然后重新选择应用程序中的问题区域,如下所示:

enter image description here

然后尝试删除FocusVisualStyle,只需单击Value(我的屏幕截图中为黄色)并删除即可。冲洗并重复,直到找到罪魁祸首。可视树树可能不会与逻辑树完全匹配,但通过反复试验,你可以解决它。

在我上面的例子中,我发现ScrollViewer导致了我讨厌的虚线矩形而不是我第一次认为的画布。

关心大卫

答案 2 :(得分:1)

在这些控件上设置IsTabStopfalse应解决此问题。

答案 3 :(得分:1)

您应该将FocusVisualStyle属性设置为none。

答案 4 :(得分:-4)

最后,我们刚刚修改了问题发生的所有地方。

真可惜......