У меня есть TextBox в StatusBar в wpf, который я хочу обновить.Обновить текст в StatusBar в wpf с помощью C#
У меня есть список файлов в ListBox. В каждом файле я бы выполнил некоторую операцию, вызвав метод метода ProcessFile(). Итак, всякий раз, когда обработка файлов завершена, я хочу показать это имя файла в тексте StatusBar.
Я пытался что-то вроде этого:
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;
}
Но я могу видеть только имя последнего файла в StatusBar. Что не так с кодом? Может кто-нибудь это исправить? Спасибо.
почему должен я создать класс spearate, если это может быть сделано только с несколькими линиями с помощью Диспетчера ? – Archie
Для объяснения см. Статью «Обзор привязки данных». Ссылка выше в конце ответа. – zendar