禁用从键盘聚焦的整个用户控制

Evi*_*ver 4 wpf xaml focus

我在一个窗口中有UserControl.当用户使用"Tab"键走动窗口时,用户控件会聚焦并且围绕它绘制虚线边框.如何防止这种行为? 在此输入图像描述

Ana*_*aev 6

尝试用于控制集Focusable = "False".例:

<Grid Focusable="False">
...
</Grid>
Run Code Online (Sandbox Code Playgroud)

或者设置Style自己关注:

<Grid FocusVisualStyle="{x:Null}" />
Run Code Online (Sandbox Code Playgroud)

此外,Style焦点可能是:

<Style x:Key="MyItemFocusVisual" TargetType="{x:Type Control}">
    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Control}">
                <Border SnapsToDevicePixels="True" CornerRadius="0" BorderThickness="5" BorderBrush="#7B2F81" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

使用:

<Grid Focusable="True" FocusVisualStyle="{StaticResource MyItemFocusVisual}" ... />
Run Code Online (Sandbox Code Playgroud)

Output

在此输入图像描述


Chr*_* W. 5

如果你只是想通过Tabbing保持它不接受焦点,只需在对象上声明它,IsTabStop="False"或者你可以编辑它的控制模板并摆脱焦点的变化.


Evi*_*ver 0

这是我的错误。我有 xaml:

<ContentControl>
  <ScrollViewer name="viewport"/>
</ContentControl>
Run Code Online (Sandbox Code Playgroud)

并且“viewport.Content”从代码隐藏设置为我的UserControl。

绘制焦点边框的是 ContentControl。我把它删除了,只留下了一个。问题解决了。