J'ai un TextBox dans StatusBar dans wpf que je veux mettre à jour.Mettre à jour le texte dans StatusBar dans wpf en utilisant C#
J'ai une liste de fichiers dans ListBox. Sur chaque fichier je ferais une opération en appelant say method ProcessFile(). Chaque fois que le traitement de fichier est terminé, je veux afficher le nom de ce fichier dans le texte StatusBar.
J'ai essayé quelque chose comme ceci:
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;
}
Mais je ne peux voir le nom du dernier fichier dans la barre d'état. Quel est le problème avec le code? Quelqu'un peut-il le corriger? Merci.
pourquoi vais-je créer une classe spearate si elle ne peut se faire avec quelques lignes à l'aide de Dispatcher ? – Archie
Voir l'article "Aperçu de la liaison de données" pour des explications. Le lien est au-dessus à la fin de la réponse. – zendar