WPF のステータスバーに表示したテキストをフェードアウトさせる

ステータスバーにメッセージを表示し、一定時間経ったら消す、という処理を実装する際、今回はただ消すだけではなくてフェードアウトしていくような消し方を考えてみた。

まずはステータスバーの配置とアニメーションの定義。メッセージを5秒間普通に表示した後、1秒間でフェードアウトして消えるようにしている。

<StatusBar>
<StatusBarItem>
<TextBlock Name="textBlock">
<TextBlock.Resources>
<Storyboard x:Key="fadeStoryboard">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="textBlock" Storyboard.TargetProperty="Opacity">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:05" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:06" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</TextBlock.Resources>
</TextBlock>
</StatusBarItem>
</StatusBar>


こうしておいて、コードビハインドから TextBlock.Text に文字列を設定するのと同時にアニメーションを起動させる。



this.textBlock.Text = "ABCDEFG";
Storyboard storyboard = (Storyboard)this.textBlock.Resources["fadeStoryboard"];
storyboard.Begin();


本当は TextBlock.Text への文字列の設定をトリガーにして、勝手にアニメーションが起動されるようにできるとベストなので、やり方を模索中。

Comments

Popular posts from this blog

TFS: 別PCでのチェックアウトを取り消す

WPF の RichTextBox に文字列を設定する&取り出す

WPFアプリにアニメーションGIFを表示させる