首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何防止WPF按钮在单击后保持突出显示?

如何防止WPF按钮在单击后保持突出显示?
EN

Stack Overflow用户
提问于 2011-05-10 20:53:02
回答 6查看 37.7K关注 0票数 45

当单击标准的WPF按钮时,它将以蓝色突出显示(可能使用设置的任何Windows主题中的蓝色),并且它将保持突出显示,直到您与任何其他控件交互。对于我的应用程序,它会让用户感到困惑。

有没有一种简单的方法可以关闭它,让按钮恢复到正常的样式?我使用的是.NET 4。

EN

回答 6

Stack Overflow用户

发布于 2011-05-10 20:57:39

尝试将Focusable设置为false。该按钮将是可单击的,但不会保持焦点。

票数 17
EN

Stack Overflow用户

发布于 2011-05-10 20:58:39

这是Aero按钮具有焦点时的默认外观。您可以设置Focusable="False",也可以使用自定义样式,当按钮具有焦点时,该样式的呈现方式不会有所不同。类似于:

代码语言:javascript
复制
xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
代码语言:javascript
复制
<Style x:Key="BaseButtonStyle" TargetType="{x:Type ButtonBase}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ButtonBase}">
                <theme:ButtonChrome Name="Chrome" Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}" RenderDefaulted="{TemplateBinding Button.IsDefaulted}"
                        RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"
                        SnapsToDevicePixels="true">
                    <ContentPresenter Margin="{TemplateBinding Padding}"
                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True"
                            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                </theme:ButtonChrome>
                <ControlTemplate.Triggers>
                    <!--
                    Do not show blue when focused
                    <Trigger Property="IsKeyboardFocused" Value="true">
                        <Setter TargetName="Chrome" Property="RenderDefaulted" Value="true" />
                    </Trigger>-->
                    <Trigger Property="ToggleButton.IsChecked" Value="true">
                        <Setter TargetName="Chrome" Property="RenderPressed" Value="true" />
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="false">
                        <Setter Property="Foreground" Value="#ADADAD" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<Style x:Key="{x:Type ToggleButton}" BasedOn="{StaticResource BaseButtonStyle}" TargetType="{x:Type ToggleButton}" />
<Style x:Key="{x:Type RepeatButton}" BasedOn="{StaticResource BaseButtonStyle}" TargetType="{x:Type RepeatButton}" />
<Style x:Key="{x:Type Button}" BasedOn="{StaticResource BaseButtonStyle}" TargetType="{x:Type Button}" />

您需要添加一个对PresentationFramework.Aero.dll的引用

票数 2
EN

Stack Overflow用户

发布于 2011-05-10 21:00:16

这就是聚焦状态。要关闭它,您必须更改聚焦状态。使用Blend是最简单的。

我不建议将可聚焦设置为false,因为它会干扰键盘的使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5950309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档