使用metro按钮创建按钮样式

时间:2015-05-12 13:43:16

标签: wpf button microsoft-metro

我使用这组资源来创建一个按钮样式,在悬停,单击和空闲状态时更改按钮上的图像。

<Window.Resources>
        <Image x:Key="LoginIdle" Source="/content/images/btn-login-idle.png" />
        <Image x:Key="LoginHover" Source="/content/images/btn-login-hover.png" />
        <Image x:Key="LoginActive" Source="/content/images/btn-login-active.png" />

        <Style x:Key="LoginButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="OverridesDefaultStyle" Value="True"/>
            <Setter Property="Content" Value="{StaticResource LoginIdle}"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="{DynamicResource LoginIdle}"/>
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter Property="Background" Value="{DynamicResource LoginActive}"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

我试着按下按钮。

<Button Style="{DynamicResource LoginButtonStyle}" Name="LoginButton" Click="LoginBtn_Click">
    </Button>

问题是,图像不存在。

我还尝试在按钮上设置内容值,只是更改后端代码上的图像,但是当我尝试使背景透明时,我的图像周围有一个边框。我认为这是因为按钮的自然行为。不太确定。

enter image description here

总之,我想要完成的是在按钮上添加空闲图像,在悬停时更改图像,按下并离开按钮。

2 个答案:

答案 0 :(得分:0)

所有图片都不存在吗?或者只有空闲的?

如果只有空闲映像不存在,您是否尝试在触发器之前设置背景属性而不是Content属性?并使用像触发器一样的动态资源?

答案 1 :(得分:0)

对于那些对我的问题的答案感兴趣的人。做了额外的研究。我发现我需要在ControlTemplate中添加这一行。

<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>

然后所有触发器都能正常工作。