2017-08-09 1 views
1

Je veux mettre un spinner de chargement et après un certain temps (environ 3, 4 secondes) pour le cacher. Comment puis-je le faire?Comment puis-je cacher un spinner après un certain temps?

<StackPanel Grid.ColumnSpan="5" Grid.RowSpan="10" Background="White"Name="spinner"> 
    <fa:ImageAwesome Width="80" Icon="Spinner" Spin="True" SpinDuration="2" /> 
    </StackPanel> 

Répondre

2

Voici une solution pure XAML, sans aucun code derrière:

<StackPanel ...> 
    <StackPanel.Triggers> 
     <EventTrigger RoutedEvent="Loaded"> 
      <BeginStoryboard> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"> 
         <DiscreteObjectKeyFrame KeyTime="0:0:3" 
               Value="{x:Static Visibility.Collapsed}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </StackPanel.Triggers> 

    <fa:ImageAwesome .../> 
</StackPanel> 
+0

Parfait! Merci. –

0

Définissez l'attribut x:Name de l'élément dans XAML:

<fa:ImageAwesome x:Name="MyIcon" Width="80" Icon="Spinner" Spin="True" SpinDuration="2" /> 

Et dans le code derrière:

private DispatcherTimer dispatcherTimer; 

public MainWindow() 
{ 
    InitializeComponent(); 

    //Create a timer with interval of 3 secs 
    dispatcherTimer = new DispatcherTimer(); 
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 
    dispatcherTimer.Interval = new TimeSpan(0, 0, 3); 

    MyIcon.Visibility = System.Windows.Visibility.Visible; 

    // Start the timer 
    dispatcherTimer.Start(); 
} 

private void dispatcherTimer_Tick(object sender, EventArgs e) 
{ 
    MyIcon.Visibility = System.Windows.Visibility.Collapsed; 

    // Stop the timer 
    dispatcherTimer.Stop(); 
} 
+0

Ouais, merci! C'était vraiment utile! –

+0

Not that MVVM ... –

+0

Juste une note, vous devez soit appeler Start et Stop, soit définir IsEnabled sur true et false. Mélanger les deux semble étrange. – Clemens