我有一个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添加本地触发器?
答案 0 :(得分:2)
来自MSDN
触发器的集合 仅在元素上建立 支持EventTrigger,而不是属性 触发器(触发器)。如果您需要 属性触发器,你必须放置 这些都在一个样式或模板中 然后将该样式或模板分配给 该元素要么直接通过 Style属性,或间接属性 通过隐式样式引用。
答案 1 :(得分:1)
FrameworkElements与样式和模板的触发器集合接受不同类型的触发器。对于FrameworkElement.Triggers,您只能使用常用于启动动画的EventTrigger。 Style,ControlTemplate和DataTemplate触发器集合可以使用您正在使用的更常见的Trigger和DataTrigger。这是一个奇怪的设置,总是有点像一个未完成的功能。您可以更改代码以使用Storyboard从EventTrigger为DropShadowEffect上的属性设置动画,或者只使用Style方法。