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

时间:2013-08-05 15:36:39

标签: wpf xaml focus

我在一个窗口中有UserControl。当用户使用“Tab”键走动窗口时,用户控件会聚焦并且围绕它绘制虚线边框。如何防止这种行为? enter image description here

3 个答案:

答案 0 :(得分:5)

如果您只是想通过Tabbing保持它不接受焦点,只需通过IsTabStop="False"在对象上声明它,或者您可以为它编辑控件模板并摆脱焦点更改。

答案 1 :(得分:5)

尝试使用控件集Focusable = "False"。例如:

<Grid Focusable="False">
...
</Grid>

或者设置Style以使自己专注:

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

此外,焦点的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>

使用:

<Grid Focusable="True" FocusVisualStyle="{StaticResource MyItemFocusVisual}" ... />

Output

enter image description here

答案 2 :(得分:0)

这是我的错。我有xaml:

<ContentControl>
  <ScrollViewer name="viewport"/>
</ContentControl>

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

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

相关问题