6

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

捕获

外部控制是Grid, 而在其他地方,其他地方Border也有同样的问题。

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

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

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

更新:

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

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

4

4 回答 4

12

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

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

或者

<Grid>
    <Grid.FocusVisualStyle>
        <Style />
    </Grid.FocusVisualStyle>
</Grid>
于 2018-02-26T07:47:40.950 回答
2

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

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

在此处输入图像描述

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

在上面的示例中,我发现是 ScrollViewer 导致了我烦人的虚线矩形,而不是我最初假设的画布。

问候大卫

于 2017-03-31T10:38:31.530 回答
1

在这些控件上设置IsTabStop为应该可以解决此问题。false

于 2013-09-16T10:41:52.857 回答
1

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

于 2013-09-16T11:07:56.830 回答