2014-09-06 79 views
2
<Window.Resources> 
     <Storyboard x:Key="ButtonEffect_01" AutoReverse="True" RepeatBehavior="Forever"> 
      <ColorAnimationUsingKeyFrames 
        Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Color)" 
        Storyboard.TargetName="btnAdd"> 
       <EasingColorKeyFrame KeyTime="0" Value="Black"/> 
       <EasingColorKeyFrame KeyTime="0:0:0.4" Value="#FFF3FF00"/> 
      </ColorAnimationUsingKeyFrames> 
     </Storyboard> 
    </Window.Resources> 

    <Button x:Name="btnAdd" Content="Add" Width="69" Height="27"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="MouseEnter"> 
       <ei:ControlStoryboardAction Storyboard="{StaticResource ButtonEffect_01}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </Button> 

我有3个更多按钮btnDelete,btnUpdate,btnBack我可以对所有这些按钮使用相同的Storyboard吗?任何绑定方法?我们可以为WPF XAML中的多个按钮创建单个Storyboard吗?

回答

1

为了避免指定目标可以定义Button S的Style里面故事板:

<Window.Resources> 
    <Style TargetType="Button"> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="MouseEnter"> 
       <BeginStoryboard> 
        <Storyboard AutoReverse="True" RepeatBehavior="Forever"> 
         <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Color)"> 
          <EasingColorKeyFrame KeyTime="0" Value="Black"/> 
          <EasingColorKeyFrame KeyTime="0:0:0.4" Value="#FFF3FF00"/> 
         </ColorAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
2

您可以共享动画多个对象,但是需要的动画状态的检查。 为了防止错误可以停止动画前分配新的目标:

private void MouseEnter(object sender, PointerRoutedEventArgs e) 
    { 
     ButtonEffect_01.Stop(); 
     ButtonEffect_01.SetValue(Storyboard.TargetNameProperty, (sender as Button).Name); 
     ButtonEffect_01.Begin(); 
    } 

来源:http://msdn.microsoft.com/en-us/library/windows/apps/dn376886.aspx

+0

,故事情节必须在同一时间每个按钮运行,因此我不认为你可以做到这一点.. – Pragmateek 2014-09-06 16:52:33

+0

是的,使用故事板的单个实例的成本是,在时间只有一个动画。但如果范围在鼠标上投下阴影,我认为他有一个动画在运行。 – Frix33 2014-09-06 17:06:06

+0

只有OP知道:)但是没有'MouseLeave'难以确定... – Pragmateek 2014-09-06 17:10:24

相关问题