为什么我的IsMouseOver风格在我的控制器风格中什么都不做

时间:2015-10-17 13:05:05

标签: wpf mahapps.metro

所以我有Style

xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"

<Style TargetType="Controls:NumericUpDown">
    <Setter Property="Background" Value="#FF307AE4"/>
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="True">
            <Setter Property="Background" Value="Gray"/>
            <Setter Property="BorderBrush" Value="Gray"/>
        </Trigger>

        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderBrush" Value="Gainsboro"/>
        </Trigger>

        <Trigger Property="IsMouseOver" Value="False">
            <Setter Property="BorderBrush" Value="Gray"/>
        </Trigger>
    </Style.Triggers>
</Style>

我定义了几种颜色并希望更改IsMouseOver属性,但似乎这根本不起作用。

IsEnabled工作得很好。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

查看您是否还在控件中设置BorderBrush属性,认为它将设置一些初始值。这将始终优先于通过您的风格所做的任何更改。

我试过下面的代码:

<Controls:NumericUpDown Minimum = "0" Maximum = "10000" Interval = "5" StringFormat="C2" Padding="5">
            <Controls:NumericUpDown.Style>
                <Style TargetType="Controls:NumericUpDown">
                <Setter Property="Background" Value="Pink"/>
                <Style.Triggers>
                    <Trigger Property="IsEnabled" Value="True">
                        <Setter Property="Background" Value="Yellow"/>
                    </Trigger>                  

                        <Trigger Property="IsMouseOver" Value="False">
                            <Setter Property="Background" Value="DeepSkyBlue"/>
                            <Setter Property="BorderBrush" Value="Black"/>
                            <Setter Property="BorderThickness" Value="3"/>
                        </Trigger>

                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Cornsilk"/>
                            <Setter Property="BorderBrush" Value="Purple"/>
                            <Setter Property="BorderThickness" Value="3"/>
                        </Trigger>

                    </Style.Triggers>
            </Style>
            </Controls:NumericUpDown.Style>
        </Controls:NumericUpDown>

鼠标悬停边框效果完全不可见。背景效果很好,但BorderBrush,BorderThickness根本不起作用。这肯定是一个错误。

但是当我们在这个页面上应用某些样式时,情况会发生变化。但仍然没有改变边框。但BorderThickness工作正常。你可以试验一下。一旦我熟悉了这一点,我会更新。

http://mahapps.com/guides/styles.html#app