【问题标题】:Creating button style using metro button使用 Metro 按钮创建按钮样式
【发布时间】:2015-05-12 13:43:15
【问题描述】:

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

<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>

问题是,图像不存在。

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

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

【问题讨论】:

    标签: wpf button microsoft-metro


    【解决方案1】:

    所有的图像都不在那里吗?还是只有空闲的?

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

    【讨论】:

    • 我根本看不到任何图像。我什至试着悬停它。
    • 尝试使用 ImageBrush 而不是 Image。你确定你的图片有正确的路径吗?
    • 尝试在我的设置器上将内容更改为背景。仍然没有图像。我确定路径,因为当我尝试使用静态资源和我的图像键设置按钮的内容值时。图像显示在我的帖子中。我在 wpf 相对较新。将使用 ImageBrush 进行快速搜索。感谢您的建议。
    • 修复它,我添加了这段代码。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 2013-12-25
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多