繁体   English   中英

WPF按钮触发器样式无法识别背景

[英]WPF Button Trigger Style Not recognizing background

我正在研究按钮样式,并且悬停效果给我一些问题。 我进行了搜索,但是没有找到答案(或者很可能没有正确搜索),所以我决定在这里询问。 我在WPF用户控件中指定以下样式,然后在按钮上设置此样式。

<Style x:Key="TileButton" TargetType="Button">
            <Setter Property="BorderThickness" Value="1" />
            <Setter Property="BorderBrush" Value="Black" />
            <Setter Property="Height" Value="80" />
            <Setter Property="Width" Value="80" />
            <Setter Property="Margin" Value="10,10,0,0" />
            <Setter Property="Background" Value="#FF91b220" />
            <Setter Property="FontWeight" Value="Bold" />
            <Setter Property="Foreground" Value="White" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="#FF91b220" />
                </Trigger>
            </Style.Triggers>

        </Style>

除了当我将鼠标悬停在按钮上时,所有东西似乎都可以正常工作,而不是我希望的背景颜色保持一致,而是恢复为默认的WPF浅蓝色。 我尝试添加其他属性更改,例如增加鼠标悬停时的高度,只是为了确认这些更改是否生效。 似乎只是想阻止我的背景。

TIA

您必须完全覆盖按钮的继承的Windows样式。 尝试将followinf代码段添加到您的样式中。

<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type Button}">
            <Border Background="{TemplateBinding Background}">
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>

还可以在模板的边框上移动边框的设置器(或它们的内容)。

按钮的这种行为以默认按钮样式定义,“鼠标悬停”颜色定义为绑定。 要在鼠标悬停时保留颜色,您可以覆盖按钮模板,例如:

<Style  TargetType="Button">
                <Setter Property="OverridesDefaultStyle" Value="True"/>
                <Setter Property="FontWeight" Value="Bold" />
                <Setter Property="Foreground" Value="White" />                   

                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border BorderThickness="1"
                                    Margin="10,10,0,0"                         
                                    BorderBrush="Black"                            
                                    Background="#FF91b220"
                                    Height="80"
                                    Width="80">

                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>


            </Style>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM