<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="" Height="300" Width="300"> <Window.Resources> <Storyboard x:Key="Storyboard1"> <ParallelTimeline> <DoubleAnimation x:Name="Animation1" Storyboard.TargetProperty="Width" From="140" To="50" AutoReverse="True" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0.5" AutoReverse="True" RepeatBehavior="Forever" /> </ParallelTimeline> </Storyboard> </Window.Resources> <UniformGrid> <Button x:Name="button3" Content="Method 3" Click="Button3_Click" Loaded="Button3_Loaded" /> </UniformGrid> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; namespace WpfApplication1 { public partial class Window1 : Window { private AnimationClock opacityClock; private AnimationClock widthClock; public Window1() { InitializeComponent(); } private void Button3_Loaded(object sender, RoutedEventArgs e) { DoubleAnimation opacityAnimation = new DoubleAnimation(1d, 0.5d, TimeSpan.FromSeconds(1), FillBehavior.HoldEnd); opacityAnimation.RepeatBehavior = RepeatBehavior.Forever; opacityAnimation.AutoReverse = true; opacityClock = opacityAnimation.CreateClock(); button3.ApplyAnimationClock(Button.OpacityProperty, opacityClock); DoubleAnimation widthAnimation = new DoubleAnimation(140d, 50d, TimeSpan.FromSeconds(1), FillBehavior.HoldEnd); widthAnimation.RepeatBehavior = RepeatBehavior.Forever; widthAnimation.AutoReverse = true; widthClock = widthAnimation.CreateClock(); button3.ApplyAnimationClock(Button.WidthProperty, widthClock); } private void Button3_Click(object sender, RoutedEventArgs e) { opacityClock.Controller.Remove(); widthClock.Controller.Remove(); } } }