Il y a un problème avec la mise à jour de l'interface utilisateur dans WPF.
J'ai un tel code :
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
LongTimeMethod(); //some long operation
}
Le problème est que jusqu'à la fin de LongTimeMethod (c'est-à-dire la fin du gestionnaire d'événements), Label.Visibility et TextBox.Text ne seront pas modifiés.
J'ai résolu le problème comme ça jusqu'à présent :
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
Dispatcher.BeginInvoke(new Action(LongTimeMethod),
DispatcherPriority.Background);
}
Existe-t-il une autre solution sans utiliser l'invocation du dispatcher ? L'appel à this.UpdateLayout() n'est d'aucune utilité.