Update-text in der Statusleiste in wpf mit C#
Ich habe eine TextBox in der Statusleiste in wpf, die ich aktualisieren möchten.
Habe ich eine Liste von Dateien in der ListBox. Auf jeder Datei, die ich tun würde eine operation durch Aufruf der Methode sagen ProcessFile().
Also immer dann, wenn die Verarbeitung der Dateien abgeschlossen ist, möchte ich zeigen, dass die Dateinamen in die Statusleiste ein text.
Habe ich versucht, so etwas wie dieses:
private void button_Click(object sender, RoutedEventArgs e)
{
statusBar.Visibility = Visibility.Visible;
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(TimeConsumingMethod), frame);
Dispatcher.PushFrame(frame);
statusBar.Visibility = Visibility.Collapsed;
}
public object TimeConsumingMethod(Object arg)
{
((DispatcherFrame)arg).Continue = false;
foreach (string fileName in destinationFilesList.Items)
{
txtStatus.Text = fileName.ToString();
//Assume that each process takes some time to complete
System.Threading.Thread.Sleep(1000);
}
return null;
}
Aber ich kann nur die Letzte Datei den Namen in der Statusleiste.
Was stimmt mit dem code? Kann jemand korrigieren?
Danke.
InformationsquelleAutor Archie | 2010-04-30
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Möglichkeiten, dies zu tun.
Set-Inhalt direkt aus dem code
Sie müssen die Namen für die
TextBox
so dass Sie zugreifen können es Inhalt:XAML
C#
Mithilfe der Datenbindung
Erstellen Sie ein Objekt und legen Sie es als
DataContext
zu denTextBox
oder einige WPF-element enthalten, das Textfeld (status bar, Fenster, ...).XAML:
C#
Weitere Informationen zur Datenbindung finden Sie unter Datenbindung Überblick
Siehe Artikel "Data Binding-Übersicht" für die Erklärung. Link ist oben, am Ende der Antwort.
InformationsquelleAutor zendar
Wenn Sie mit einem ViewModel, würde ich definieren, eine Eigenschaft "ProcessedFile" in der ViewModel und binden Sie das Textfeld für Ihre StatusBar auf dem Grundstück.
Jedes mal, wenn Sie bearbeitet eine Datei ich würde die Eigenschaft "ProcessedFile" auf den Namen der Datei.
Heres einige code für das ViewModel.
Hier ist der XAML zum binden der TextBox die Eigenschaft. (Ich gehe davon aus, dass das ViewModel wird als DataContext für die TextBox)
InformationsquelleAutor Jehof