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

问题描述 投票:0回答:5

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

Capture

外部控件是

Grid
,其他地方,
Border
等也有同样的问题。

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

我们尝试设置元素

FocusVisualStyle="{x:Null}"
,它根本没有任何效果,并且我们找不到哪些更改影响了它。

那么,这个问题与电脑环境有关吗?以及可能是什么原因导致这个奇怪的问题?

更新:

我们刚刚在干净的虚拟机中尝试了我们的应用程序,它可以重现,所以也许这个问题的唯一问题是我们的代码。

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

c# wpf wpf-controls
5个回答
15
投票

由于

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

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

或者

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

2
投票

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

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

enter image description here

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

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

问候大卫


1
投票

将这些控件上的

IsTabStop
设置为
false
应该可以解决此问题。


1
投票

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


0
投票

对于

Mahapps.Styles.Button.MetroSquare
按钮,我尝试了以下方法,但没有成功:

  • 将按钮上的
    IsTabStop
    设置为
    false
  • 在按钮上设置
    FocusVisualStyle="{x:Null}"
  • 在父容器上设置
    FocusVisualStyle="{x:Null}"

最后,有效的是在按钮上设置

Focusable="False"

© www.soinside.com 2019 - 2024. All rights reserved.