首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何消除WPF按钮上的默认鼠标悬停效果?

如何消除WPF按钮上的默认鼠标悬停效果?
EN

Stack Overflow用户
提问于 2010-10-04 18:26:20
回答 4查看 158.8K关注 0票数 88

我的问题是,在WPF中,每当我尝试使用触发器或动画更改按钮背景的颜色时,默认的鼠标悬停效果(在橙色发光的情况下变为灰色)似乎更重要。

经过广泛的搜索,我对如何消除这种影响一无所知。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-04 18:50:44

您需要创建自己的自定义按钮模板,以完全控制所有状态下的外观。这是一个tutorial

票数 18
EN

Stack Overflow用户

发布于 2010-11-15 15:16:14

这类似于Mark Heath提到的解决方案,但没有那么多代码来创建一个非常基本的按钮,没有内置的鼠标经过动画效果。它保留了以黑色显示按钮边框的简单鼠标悬停效果。

例如,可以将样式插入到Window.Resources或UserControl.Resources部分(如图所示)。

代码语言:javascript
复制
<UserControl.Resources>
    <!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
    <Style x:Key="MyButtonStyle" TargetType="Button">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Margin" Value="5"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="border" 
                        BorderThickness="1"
                        Padding="4,2" 
                        BorderBrush="DarkGray" 
                        CornerRadius="3" 
                        Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="border" Property="BorderBrush" Value="Black" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>

<!-- usage in xaml -->
<Button Style="{StaticResource MyButtonStyle}">Hello!</Button>
票数 114
EN

Stack Overflow用户

发布于 2014-08-15 03:44:43

如果有人不想覆盖默认控件模板,那么这里就是解决方案。

您可以为可以具有TextBlock的按钮创建DataTemplate,然后您可以在IsMouseOver属性上编写属性触发器来禁用鼠标悬停效果。TextBlock和Button的高度应该相同。

代码语言:javascript
复制
<Button Background="Black" Margin="0" Padding="0" BorderThickness="0" Cursor="Hand" Height="20">
    <Button.ContentTemplate>
        <DataTemplate>
            <TextBlock Text="GO" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" TextDecorations="Underline" Margin="0" Padding="0" Height="20">
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Style.Triggers>
                            <Trigger Property ="IsMouseOver" Value="True">
                                <Setter Property= "Background" Value="Black"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
            </TextBlock>
        </DataTemplate>
    </Button.ContentTemplate>
</Button>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3854317

复制
相关文章

相似问题

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