UIコンポーネントをブリンクするコードビハインド

WPFにおいて、テキストやボタンなどのUIコンポーネントをブリンクさせるサンプルです。例は、300ミリ秒間にOpacity値を1.0から0に変化させることを3回繰り返すものです。

XAMLで記述するサンプルはネット上に色々あるのですが、ソースコードで記述した例が少ないですねぇ。

  DoubleAnimation blink = new DoubleAnimation();
  blink.From = 1.0;
  blink.To = 0.0;
  blink.AutoReverse = true;
  blink.RepeatBehavior = new RepeatBehavior(3);
  blink.Duration 
    = new Duration(TimeSpan.FromMilliseconds(300));

  Storyboard sb = new Storyboard();
  sb.Children.Add(blink);

  // viewにボタンとかテキストを指定してね。
  Storyboard.SetTarget(blink, view);
  Storyboard.SetTargetProperty(blink, 
    new PropertyPath("(UIElement.Opacity)"));
  
  sb.Begin();

上記のソースコードと同様な処理をXAMLを用いて記述した例です。ボタンをクリックしたときにブリンクします。

  <Button Content="Animation2" Height="23" Name="button3" Width="75">
    <Button.Triggers>
      <EventTrigger RoutedEvent="Button.Click">
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation
               Storyboard.TargetProperty="Opacity"
               From="1" To="0" Duration="0:0:0.3"
               RepeatBehavior="3x" AutoReverse="true" />
           </Storyboard>
         </BeginStoryboard>
      </EventTrigger>
    </Button.Triggers>
  </Button>

コードビハインドで記述するのが簡単にならないかなぁ。