BusyIndicator en WPF / MVVM : mode asynchrone
Bonjour à tous,
Quelques traitements dans mon application prenne quelques secondes, voir quelques minutes.
J'ai donc voulu utiliser le toolkit BusyIndicator.
voici le code du côté xaml de ma mainWindows :
Code:
1 2 3 4 5 6 7
|
xmlns:extToolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended"
(...)
<extToolkit:BusyIndicator IsBusy="{Binding BI}" >
<TabControl x:FieldModifier="public" Margin="0,29,0,23" Name="tabControl2" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Tabs}" SelectedIndex="{Binding TabSelect}" Background="#00000000">
</TabControl>
</extToolkit:BusyIndicator> |
VOici le code de mon viewModel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (o, ea) =>
{
Application.Current.Dispatcher.BeginInvoke((Action)(() =>
NewTabItem("LSP", "Liste des Portefeuilles")
));
};
worker.RunWorkerCompleted += (o, ea) =>
{
_BI = false;
RaisePropertyChanged("BI");
};
_BI = true;
RaisePropertyChanged("BI");
worker.RunWorkerAsync(); |
Malheureusement le BusyIndicator ne s'affiche jamais.
Je pense que j'ai un problème d'appel asynchrone de mon busyIndicator pour Isbusy=true.
Car si j'enlève toute la partie worker, j'arrive bien à afficher mon Busyindicator
Comment forcer l'affichage du BusyIndicator de manière asynchrone svp?
(Pour info, la fonction que j'execute sur le thread a pour objectif d'ajouter un tabItem au tabControl et le content de ce tabItem est un USerControl qui dans son init fait quelques requête en base données, est-ce que j'ai mis au bon endroit mon busyIndicator?)
Merci de votre aide.
cdt
Mickeybond