前言:对于此操做,我只想说是微软的神经,仍是个人笨蛋。为何EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操做,而必需要放一个Action,而默认的Action只有三个,其中两个为动画,一个为播放声音,我只想说,能够洗洗睡了。动画
正题:在EventTriigger中修改属性的值,怎么作呢,咱们都知道EventTrigger中只有Action可使用,而Action的操做中咱们也只能使用StoryBoard来操做,难道咱们也要经过动画修改各类属性?没错,就是这样,却不知动画不只支持Double、Color、Point,它还支持Object哦,待我上例子。spa
<ControlTemplate.Triggers> <EventTrigger RoutedEvent="MouseDoubleClick"> <BeginStoryboard> <Storyboard> <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="DocumentPageView_2" Storyboard.TargetProperty="(UIElement.Visibility)"> <DiscreteObjectKeyFrame KeyTime="00:00:0.1" Value="{x:Static Visibility.Collapsed}" /> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="AdornerDecorator1" Storyboard.TargetProperty="(UIElement.Visibility)"> <DiscreteObjectKeyFrame KeyTime="00:00:0.1" Value="{x:Static Visibility.Visible}" /> </ObjectAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent="MouseLeftButtonDown"> <BeginStoryboard> <Storyboard> <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="AdornerDecorator1" Storyboard.TargetProperty="(UIElement.Visibility)"> <DiscreteObjectKeyFrame KeyTime="00:00:0.1" Value="{x:Static Visibility.Collapsed}" /> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="DocumentPageView_2" Storyboard.TargetProperty="(UIElement.Visibility)"> <DiscreteObjectKeyFrame KeyTime="00:00:0.1" Value="{x:Static Visibility.Visible}" /> </ObjectAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> </ControlTemplate.Triggers> </ControlTemplate>
在上述代码中分别在鼠标单击事件和双击事件中隐藏/显示了元素,是否是很奇怪咱们使用的ObjectAnimationUsingKeyFrames这个东西,他和DoubleAnimationusingKeyFrames等三个动画是同样的,只不过它处理的是除上述三种动画支持的类型以外的类型。好比如今设置的为Visibility属性,并不是Double、Color、Point,那么咱们就可使用这个东东,使用方法同样,只不过Value地方要特殊处理哦。code
P.S.此方法,我的感受很差,不知道小伙伴们有木有好的方法,有的话记得@我。blog