2017-08-09 5 views
1

Ich möchte eine Spinner laden und nach einer Weile (ca. 3, 4 Sekunden), um es zu verstecken. Wie kann ich es tun?Wie kann ich einen Spinner nach einer Weile verstecken?

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

Antwort

2

Hier ist eine reine XAML-Lösung, ohne Code hinter:

<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

Perfekt! Vielen Dank. –

0

Stellen Sie das x:Name Attribut des Elements in XAML:

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

Und in Code hinter:

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

Ja, danke! Es war sehr hilfreich! –

+0

Nicht, dass MVVM ... –

+0

Nur eine Anmerkung, sollten Sie entweder Start und Stop aufrufen, oder setzen Sie IsEnabled auf True und False. Das Mischen von beiden sieht seltsam aus. – Clemens

Verwandte Themen