Mon application exécute un appel de service Web et lorsque cela se produit, l'état IsExecuting est défini sur true et le bouton d'exécution est désactivé. Comme l'application n'est pas réactive pendant cette période, je change le processus pour que l'exécution se fasse dans un thread séparé. Cependant, le problème que je remarque maintenant est que le bouton d'exécution est toujours désactivé et que lorsque je clique sur l'interface, le bouton est activé. Comment puis-je réparer cela?WPF CanExecute et ThreadPool
EDIT: En Codebehind:
private void Execute()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(ExecuteThread));
}
private bool CanExecute
{
get { return !IsExecuting; }
}
private void ExecuteThread(Object o)
{
IsExecuting = true;
// Process execution here ...
IsExecuting = false;
}
In Xaml:
<Button Content="Execute" Command="{Binding Path=ExecCommand}"/>
J'ai essayé ceci en l'ajoutant comme dernière ligne dans la méthode ExecuteThread, mais cela n'a pas aidé. – Sys
@Sys, essayez d'appeler cette méthode sur le thread UI (en utilisant Dispatcher.Current.Invoke) –
J'ai essayé Application.Current.Dispatcher.Invoke (nouvelle Action (délégué {IsExecuting = true;})); mais encore ne fonctionne pas ... – Sys