Bonsoir à tous,

Description : Je souhaite afficher une progressBar pendant le chargement de ma fenêtre. J'utilise le tutorial suivant : http://elegantcode.com/2011/10/07/ex...busyindicator/

Problème : Ma fenêtre n'évolue pas, les nouveaux éléments ne sont pas ajoutés/

Donc, je ne comprend pas car j'utilise bien le dispatcher pour changer ma UI.

Je vous mets mon code ci-dessous.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 /// <summary>
        /// Réaction à la construction de la fenêtre
        /// </summary>
        /// <param name="sender">Fenêtre construite</param>
        /// <param name="e">Evènement</param>
        private void Window_Loaded(object sender, RoutedEventArgs r)
        {
            BackgroundWorker worker = new BackgroundWorker();
            worker.DoWork += (o, ea) =>
            {
                Createur_Partie createur = new Createur_Partie();
                createur.construirePartie(_joueurs, _grande);
                _partie = createur._monteur._partie;
                affichageMap();
            };
            worker.RunWorkerCompleted += (o, ea) =>
            {
                busyIndicator.IsBusy = false;
                //On met à jour les informations sur les joueurs dans la partie de droite de la fenêtre
                //updateInfoJoueurs();
                //On ajoute un observateur à notre partie
                // _partie.PropertyChanged += new PropertyChangedEventHandler(changement_partie);
                 //_partie.debut();
            };
            worker.RunWorkerAsync();
        }
 
        private void affichageMap()
        {
            Carte map = _partie._carte;
 
            for (int c = 0; c < map._largeur; c++)
            {
                Dispatcher.Invoke((Action)(() => mapGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(50, GridUnitType.Pixel) })));
            }
            Console.WriteLine(10);
            for (int l = 0; l < map._hauteur; l++)
            {
                Dispatcher.Invoke((Action)(() => mapGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(50, GridUnitType.Pixel) })));
                for (int c = 0; c < map._largeur; c++)
                {
                    Rectangle r = null;
                    //On crée un rectangle pour case représentant les ressources
                    r = createCase(c, l, map.getCase(c, l));
                    Dispatcher.Invoke((Action)(() => mapGrid.Children.Add(r)));
 
                    //On crée une ellipse donnant une information rapide sur le nombre de troupes situé sur la case
                    Dispatcher.Invoke((Action)(() => mapGrid.Children.Add(createEllipseUnite(c, l, r))));
                    foreach (Unite u in map.getCase(c, l).Unites)
                    {
                        Dispatcher.Invoke((Action)(() => mapGrid.Children.Add(affichageUnite(u, u.getType()))));
                    }
                }
            }
 
        }
 
private Rectangle createCase(int c, int l, Case ca)
        {
            var rectangle = new Rectangle();
            rectangle.Fill = selectionCaseImage(ca);
            rectangle.StrokeThickness = 3;
            rectangle.Tag = ca; 
 
            //Le rectangle est un observateur de la case
            ca.PropertyChanged += new PropertyChangedEventHandler(changement_case);
 
            //Placement du rectangle à la bonne position
            Grid.SetColumn(rectangle, c);
            Grid.SetRow(rectangle, l);
 
            //Ajout d'un listener de clique gauche
            rectangle.MouseLeftButtonDown += new MouseButtonEventHandler(clique_sur_une_case);
            return rectangle;
        }
Merci d'avance !!!!!!!!!!!!!!!!!!!!!!!