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

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

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


person src091    schedule 27.01.2013    source источник


Ответы (2)


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

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

person JustinAngel    schedule 27.01.2013

Взгляните на Класс 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;
}
person kindasimple    schedule 27.01.2013