Bonjour,
je débute en WPF et je rencontre un problème avec la notion de Data binding / rafraichissement.
Je n'arrive pas à mettre à jour l'affichage du contenu d'une barre d'état lors d'un traitement long.
J'ai défini ma barre de cette manière:
Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <StatusBar Grid.Row=" 2" MinHeight="20"> <StatusBarItem> <TextBlock x:Name="lblMessage" Text="{Binding Message,UpdateSourceTrigger=PropertyChanged }" /> </StatusBarItem> </StatusBar>
Dans mon model view:
Code C# : 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 public class ViewModel : INotifyPropertyChanged { private string _Message; public string Message { get { return _Message; } set { if (_Message == value) return; _Message = value; OnPropertyChanged("Message"); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string name) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); } } }
Et dans le "code behind" j'ai ceci :
Code C# : 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 public partial class MainWindow : Window { ViewModel MsgInfo; public MainWindow() { InitializeComponent(); MsgInfo = new Models.ViewModel() { Message = "Pas d'action en cours."}; this.DataContext = MsgInfo; } public void btnTraitementLong_Click(object sender, RoutedEventArgs e) { MsgInfo.Message = "Début du traitement"; // Ici du code qui peut durer plusieurs secondes // ... MsgInfo .Message = "traitement étape 2"; // Ici du code qui peut durer plusieurs secondes // MsgInfo .Message = "traitement étape 3"; // Ici du code qui peut durer plusieurs secondes // MsgInfo .Message = "Fin du traitement"; } }
Au lancement de l'application, la barre d'état m'affiche bien "Pas d'action en cours". Lorsque je clique sur mon bouton, le code se déroule correctement sauf que le texte qui doit m'indiquer les différentes étapes n'est pas mis à jour.
J'ai beau chercher, cela doit être gros comme une maison, mais je n'arrive pas à voir où se trouve la faille.
quelqu'un peut m'aider ?
Merci d'avance !
Partager