鼠标悬停时更改椭圆的颜色

时间:2011-12-16 08:23:25

标签: wpf

我是WPF的全新人物。这有点令人困惑,为什么第一个代码片段工作正常(鼠标悬停时,颜色会发生变化),但第二个代码片段不起作用?

<Ellipse Height="50" Width="50" Opacity="0.5" Stroke="Black" >
<Ellipse.Style>
    <Style TargetType="{x:Type Ellipse}">
        <Setter Property="Fill" Value="Blue" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Fill" Value="Green">
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</Ellipse.Style>

//

<Ellipse Height="50" Width="50" Fill="Blue" Opacity="0.5" Stroke="Black" >
<Ellipse.Style>
    <Style TargetType="{x:Type Ellipse}">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Fill" Value="Green">
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</Ellipse.Style>

感谢。

2 个答案:

答案 0 :(得分:5)

这完全是因为Property值的优先级。以下链接得到了很好的解释。

WPF Trigger won't set property if set in Element

答案 1 :(得分:-1)

区别在于

<Setter Property="Fill" Value="Blue" />

阅读有关ControlTemplates的更多信息。

http://msdn.microsoft.com/en-us/library/ms743230.aspx