如何在wpf控件中添加类似chrome的焦点矩形?

时间:2011-10-25 14:33:36

标签: wpf xaml

关于如何移除焦点矩形有很多问题,但我希望它们始终显示,就像Chrome / Safari一样。我想我想使用一个装饰器,以免干扰控件所具有的现有样式,但我从未使用它们,也找不到任何关于如何做我想要的例子。有人能指出我正确的方向吗?

编辑:这里的输入框在聚焦时有一个蓝色边框

Input box has blue border when focused

1 个答案:

答案 0 :(得分:1)

效果被称为“外发光”;一旦你知道这一点,谷歌就会出现大量的东西。我发现这很有效:

        <DropShadowEffect x:Key="SelectionGlow" BlurRadius="3" ShadowDepth="0" Color="{StaticResource {x:Static SystemColors.HighlightColorKey}}" Direction="0" />

        <Style TargetType="TextBox">
            <Style.Triggers>
                <Trigger Property="IsKeyboardFocusWithin" Value="True">
                    <Setter Property="Effect" Value="{StaticResource SelectionGlow}"/>
                </Trigger>
            </Style.Triggers>
        </Style>

关于这个解决方案的一些事情:

  1. 它不会禁用按钮等上的焦点矩形
  2. 我不确定性能是否是一个问题 - 位图效果渲染存在(有?)问题。我不确定这是否适用,或者这是否符合位图效果。它仅用于聚焦元素,因此它不会太糟糕。