WPF触发器和样式

时间:2010-06-04 00:12:12

标签: wpf triggers

我有一个UserControl,在参考资料部分我有像

这样的代码
    <Style TargetType="{x:Type Viewbox}">

        <Style.Triggers>
            <Trigger Property="Viewbox.IsMouseOver" Value="True">
                <Setter Property="Viewbox.Effect" >
                    <Setter.Value>
                        <DropShadowEffect Color="DarkGray" Direction="45" BlurRadius="30"></DropShadowEffect>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>

这适用于我在此控件中的ViewBox

但是当我做的时候

<Viewbox.Triggers>
        <Trigger Property="Viewbox.IsMouseOver" Value="True">
            <Setter Property="Viewbox.Effect" >
                <Setter.Value>
                    <DropShadowEffect></DropShadowEffect>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Viewbox.Triggers>
在视图框中

我收到错误....

有没有办法在不使用样式的情况下向ViewBox添加本地触发器?

2 个答案:

答案 0 :(得分:2)

来自MSDN

  

触发器的集合   仅在元素上建立   支持EventTrigger,而不是属性   触发器(触发器)。如果您需要   属性触发器,你必须放置   这些都在一个样式或模板中   然后将该样式或模板分配给   该元素要么直接通过   Style属性,或间接属性   通过隐式样式引用。

答案 1 :(得分:1)

FrameworkElements与样式和模板的触发器集合接受不同类型的触发器。对于FrameworkElement.Triggers,您只能使用常用于启动动画的EventTrigger。 Style,ControlTemplate和DataTemplate触发器集合可以使用您正在使用的更常见的Trigger和DataTrigger。这是一个奇怪的设置,总是有点像一个未完成的功能。您可以更改代码以使用Storyboard从EventTrigger为DropShadowEffect上的属性设置动画,或者只使用Style方法。