2010-06-04 108 views
1

我有一个用户控件,在资源节中,我有这样的代码WPF触发器和样式

<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.Triggers> 
     <Trigger Property="Viewbox.IsMouseOver" Value="True"> 
      <Setter Property="Viewbox.Effect" > 
       <Setter.Value> 
        <DropShadowEffect></DropShadowEffect> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Viewbox.Triggers> 

的视图框我得到的错误中....

有没有办法给当地的触发器添加到ViewBox不使用样式?

回答

2

MSDN

触发器 的元件上建立的集合仅 支持EventTrigger,不属性 触发器(触发器)。如果您需要 属性触发器,你必须把这些 一个样式或模板内 然后通过隐式的引用,样式或模板分配给 的元素或者直接通过 Style属性,或间接 。

1

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