Bonjour,
comme vous pouvez vous en douter mon problème concerne le propriété Command d'un contrôle Button.
Pour développer mon appli je suis parti de ce tuto : http://japf.developpez.com/tutoriels...-et-testables/ très utile au niveau de la structure "idéal" pour une appli WPF. J'ai un usercontrol nommé indicateur, et dans mon dossier ViewModel une classe indicateurViewwModel, comme dans l'exemple du tuto.
Dans indicateur.xaml, j'ai bien :
Donc mon usercontrol récupère bien les informations d'un objet en revanche lors du click sur le bouton rien ne se passe. Voici mon code dans ma classe indicateurViewModel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 xmlns:ViewModel="clr-namespace:atDemo.ViewModel" <!-- ... --> <Button Style="{StaticResource Bouton}" Command="{Binding Maj}" Height="21.96" VerticalAlignment="Bottom" Margin="128,0,120,-16">Button</Button>
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public ICommand Maj { get { if (this.majCommand==null) this.majCommand = new RelayCommand(() => this.SelectedServeur.Variation+=5); return this.majCommand; } }
Si je met un point d'arrêt au début de la fonction, je constate qu'il ne rentre jamais dedans. Pourtant dans ma fenetre principal j'ai bien :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Database db = new Database(); indicateurViewModel c = new indicateurViewModel(db); listView1.DataContext = c;
Pour info j'ai un listView qui va contenir plusieurs fois le même usercontrol. (car un indicateur - mon usercontrol- ne concerne qu'une instance)
Si vous avez besoin de plus de code pas de soucis, je voulais pas tout mettre en bloc d'un coup, j'aimerais surtout savoir si quelqu'un avait djéà eu ce problème et dans ce cas m'orienter dans ma recherche de solution.
Merci d'avance.
EDIT: En debug voici le message :
Ca veut dire que j'ai mal lié mon bouton ?... Puisqu'il devrait êter lié à indicateurViewModel et pas ServeurViewModel si j'ai bien compris. Ca vient peut être de la ? :System.Windows.Data Error: 39 : BindingExpression path error: 'Maj' property not found on 'object' ''ServeurViewModel' (HashCode=63349250)'. BindingExpressionath=Maj; DataItem='ServeurViewModel' (HashCode=63349250); target element is 'Button' (Name='Button1'); target property is 'Command' (type 'ICommand')
Window1.xaml.cs
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 foreach (Control ctrl in listView1.Items) { if (ctrl.GetType() == typeof(Controler.indicateur)) { ctrl.DataContext = c.Serveurs[j]; } j++; }
Donc la en gros je met en datacontext de mes usercontrol un objet serveur...
Partager