如何使ProgressIndicator淡出?

时间:2013-01-27 11:07:08

标签: animation windows-phone-8 fadeout progress-indicator

在我的WP8应用程序中,我使用ProgressIndicator,我希望它在隐藏之前淡出。我找不到任何描述我如何做到这一点的文档,ProgressIndicator的唯一暴露属性是IsVisible,它不提供任何动画。

然而在某些应用程序中,我可以清楚地看到进度条逐渐淡出 那我怎么能让它淡出呢?

2 个答案:

答案 0 :(得分:2)

不幸的是,您无法为WP7 / WP8的Shell组件制作超出其默认动画的动画。作为ProgressIndicator& SystemTray是Shell UI的一部分(与ApplicationBar,MessageBox和其他一起),你必须满足于buit-in过渡。

如果这确实让您感到麻烦,您可以随时使用托管的ProgressBar重新创建ProgressIndicator exprience作为应用的<Frame />模板的一部分。

答案 1 :(得分:1)

查看DoubleAnimation class on msdn

<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事件重置这些属性。

Timeline.Completed on msdn

private void DisableMyProgressBar(object sender, EventArgs e)
{
    MyProgressBar.IsEnabled = false;
    MyProgressBar.Opacity = 1;
}