私の WP8 アプリケーションでは を使用してProgressIndicator
おり、非表示にする前にフェードアウトさせたいと考えています。それを行う方法を説明しているドキュメントが見つかりません。唯一の公開されたプロパティはProgressIndicator
、IsVisible
アニメーションを提供しないものです。
しかし、一部のアプリケーションでは、プログレス バーがフェードアウトするのがはっきりとわかります。
では、どうすればフェードアウトできるのでしょうか。
私の WP8 アプリケーションでは を使用してProgressIndicator
おり、非表示にする前にフェードアウトさせたいと考えています。それを行う方法を説明しているドキュメントが見つかりません。唯一の公開されたプロパティはProgressIndicator
、IsVisible
アニメーションを提供しないものです。
しかし、一部のアプリケーションでは、プログレス バーがフェードアウトするのがはっきりとわかります。
では、どうすればフェードアウトできるのでしょうか。
残念ながら、WP7/WP8 のシェル コンポーネントをデフォルトのアニメーション以外にアニメーション化することはできません。ProgressIndicator と SystemTray は (ApplicationBar、MessageBox などと共に) シェル UI の一部であるため、組み込みのトランジションで解決する必要があります。
これが本当に問題になる場合は、管理された ProgressBar をアプリの<Frame />
テンプレートの一部として使用して、ProgressIndicator エクスペリエンスをいつでも再作成できます。
msdnの DoubleAnimation クラスを見てください。
<StackPanel>
<StackPanel.Resources>
<Storyboard x:Name="myStoryboard">
<DoubleAnimation
Storyboard.TargetName="MyProgressBar"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:5"
Completed="DisableMyProgressBar"/>
</Storyboard>
</StackPanel.Resources>
<ProgressBar x:Name="MyProgressBar" />
</StackPanel>
コード ビハインドでは、処理が完了したときにアニメーションをトリガーします。
private void StopProgressBar()
{
myStoryboard.Begin();
}
プログレス バーを無効にし、フェードアウト後に不透明度をリセットする必要があるため、Storyboard の Completed イベントを使用してこれらのプロパティをリセットします。
private void DisableMyProgressBar(object sender, EventArgs e)
{
MyProgressBar.IsEnabled = false;
MyProgressBar.Opacity = 1;
}