Как заставить ProgressIndicator исчезать?

В моем приложении WP8 я использую ProgressIndicator и я бы хотел, чтобы он исчез, прежде чем сделать его невидимым. Я не могу найти документацию, описывающую, как я могу это сделать, единственное открытое свойство ProgressIndicator является IsVisible который не обеспечивает никакой анимации.

Тем не менее, в некоторых приложениях я отчетливо вижу исчезновение индикатора выполнения.
Так как я могу сделать это исчезнуть?

2 ответа

Решение

К сожалению, вы не можете анимировать компоненты оболочки WP7/WP8, кроме анимации по умолчанию. Так как ProgressIndicator и SystemTray являются частью пользовательского интерфейса оболочки (наряду с ApplicationBar, MessageBox и другими), вам придется согласиться на переходы встроенного режима.

Если это действительно беспокоит вас, вы всегда можете воссоздать опыт ProgressIndicator с управляемым ProgressBar как часть вашего приложения <Frame /> Шаблон.

Взгляните на класс DoubleAnimation на 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();
}

Вы захотите отключить индикатор выполнения и сбросить его непрозрачность после того, как он исчезнет, ​​поэтому используйте событие Completed раскадровки для сброса этих свойств.

Хронология. Завершено на MSDN

private void DisableMyProgressBar(object sender, EventArgs e)
{
    MyProgressBar.IsEnabled = false;
    MyProgressBar.Opacity = 1;
}
Другие вопросы по тегам