为什么在Trigger中设置Button.Background不起作用?

时间:2011-03-01 05:15:23

标签: xaml triggers

以下MultiTrigger工作正常,但如果我尝试将Button.Background更改为Red,则无效。有什么想法吗?

<Window.Resources>
        <Style TargetType="Button">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions >
                        <Condition Property="IsMouseOver" Value="True" />
                        <Condition Property="IsFocused" Value="True" />
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="FontWeight" Value="Bold" />
                    </MultiTrigger.Setters>
                </MultiTrigger>
            </Style.Triggers>            
        </Style>       
    </Window.Resources>

2 个答案:

答案 0 :(得分:0)

属性由Precedence List设置,这意味着某些属性会覆盖您的Style属性。

因此,请检查您是否在Background上直接设置了Button,因为这会覆盖您的Style背景设置者;您可能还需要考虑将样式用作默认背景,如下所示:

<Style TargetType="Button">
    <Setter Property="Background" Value="Green" />
    <Style.Triggers>
        <MultiTrigger>
            <MultiTrigger.Conditions >
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="IsFocused" Value="True" />
            </MultiTrigger.Conditions>
            <Setter Property="Background" Value="Red" />
         </MultiTrigger>
    </Style.Triggers>            
</Style>     

答案 1 :(得分:0)

由于Button的ControlTemplate,这种情况正在发生。如果我将我的操作系统主题从Luna更改为Windows XP,则可以正常工作。看看这些链接

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b23e8641-977f-4127-a96a-d329a1ba04e4/

http://www.wiredprairie.us/journal/2006/09/wpf_decorators_build_your_own.html