3 Stimmen

WPF Ladeanimation

Ich habe eine ListView mit vielen Items, die in der Suche geladen werden sollen. Und ich möchte dem Benutzer eine reichhaltigere Benutzeroberfläche bieten, so dass beim Laden, Ich würde einen rotierenden Kreis anzeigen (bekannt vom AJAX-Warten) .

Ich erkenne, dass ich in Threads oder etwas gehen müssen, aber da ich dies nie zuvor in WPF getan habe, bin ich sicher, es gibt etwas besser als Threads in WPF (oder ein simpe BackgroundWorker).

Wie auch immer, es geht darum, diese Animation beim Laden anzuzeigen. Irgendeine Idee? Danke!

2voto

theSpyCry Punkte 11783

OK, jetzt habe ich eine funktionierende Lösung.

J'ai un UserControl die diese Animation enthält. Sie befindet sich irgendwo in meinem XAML-Code wie folgt: <customControls:LoadingAnimation x:Name="LoadingAnimation" /> . Dieses Steuerelement wird bei Bedarf geladen durch den Aufruf

LoadingAnimation.Show();

Wenn ich nun auf eine Schaltfläche klicke, um die zeitaufwändige Arbeit zu erledigen, bevor ich BeginInvoke() aufrufe, muss ich lade ich diese Animation.

Dann, wenn die harte Arbeit beendet ist, rufe ich LoadingAnimation.Hide(). Ganz einfach! Ich füge Code für die anderen hinzu:

private void SearchClick(object sender, RoutedEventArgs e)
{
     LoadingAnimation.Show();

     new StringDelegate(DoSearch).BeginInvoke("TextToSearch", null, null);
}

private void DoSearch(string searchText)
{
    object result = /* Do the time consuming work */    

    Dispatcher.BeginInvoke(DispatcherPriority.Normal,
         new ResultDelagate(UpdateUserInterface), result);
}

private void UpdateUserInterface(object result)
{
    LoadingAnimation.Hide();            

    DataContext = result as /* what you want */;
}

1 Stimmen

Es genügt ein Status, IsSearching, und die Verwendung von Datatriggern zum Ein- und Ausblenden der Benutzerkontrolle

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X