|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 24 ![]() |
Bonsoir,
J'ai besoin d'afficher des données sur des graphiques avec le WPF Toolkit. Je suis donc tombé sur ce tutoriel. On y voit la création des graphiques à l'initialisation de l'application. Seulement voila, je souhaite faire en sorte que les données soient mises à jour suite à une interaction utilisateur. (Plus précisément, les données utilisées pour le graphique sont chargées depuis un fichier différent en fonction de la saisie utilisateur). J'ai donc fait un essai, que voici : XAML (j'ai uniquement gardé le LineChart et ajouté button1) Code :
Code :
PS : Je débute avec WPF mais pas C# |
||||
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() ![]() |
Tu va devoir passer par du C# pour les données. Mais tu peux changer ton code comme ceci :
Code C# :
(Je l'ai fait sans tester, j'espère que je n'ai rien oublié) Ce que j'ai fait : j'ai rajouté une propriété DataList. J'ai implémenté INotifyPropertyChanged, qui est l'interface qui permet de dire au databinding que'une propriété à été changée et qu'il doit rafraichir. Je mets le Datacontext de la page sur elle-meme Dans le click, je crée une nouvelle liste et je la mets dans la variable DataList. Ca va envoyer une demande de rafraichissement au moteur de binding. Dans le XAML, tu dois binder sur la propriété : Code XAML :
C'est plus dans la philosophie du databinding (et du MVVM) comme ça. Tu peux encore aller plus loin et implémenter ta liste comme une ObservableCollection. Comme ça les changements dans ta liste seront immédiatement répercutée en binding.
__________________
Microsoft MVP : Visual C# MCPD - Windows Phone Developer MCPD - Windows Developer 4 http://www.guruumeditation.net “If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra) |
||||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 24 ![]() |
Merci pour ta réponse, plus respectueuse du MVVM.
Malheureusement, je n'arrive pas à compiler à cause du [NotifyPropertyChangedInvocator], a priori une assembly ou un using manque (d'après Visual ...) Visual me propose de générer la classe pour NotifyPropertyChangedInvocator ou de générer un nouveau type ... J'ai bien rajouté le mais je n'ai pas pu rajouter Code :
using WpfToolkitChart.Applications// Comme j'utilise le namespace WpfToolkitChart Saurais-tu d'où provient mon problème avec le NotifyPropertyChangedInvocator ? ___ Edit : Quand je supprime purement et simplement cette ligne, à l'exécution, le graphique est vite et quand je clique sur le bouton, ça plante dans la boucle foreach car DataList n'est pas instanciée (null donc). |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() |
Tu peux virer le [NotifyPropertyChangedInvocator], c'est une extension de Resharper, un plugin pour Visual Studio (que je conseille, ça aide vraiment). J'ai oublié de l'enlever, désolé.
__________________
Microsoft MVP : Visual C# MCPD - Windows Phone Developer MCPD - Windows Developer 4 http://www.guruumeditation.net “If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra) |
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 24 ![]() |
Merci ! J'ai également ajouté une ligne dans la méthode qui créé valuelist
Code :
Et c'est le fait de mettre le DataContext sur la fenêtre elle même qui tend à respecter le MVVM ? |
||
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() |
NotifyPropertyChangedInvocator n'est pas nécessaire quand tu as resharper non plus. C'est juste pour lui dire que c'est cette méthode qui implémente INotifyPropertyChange. Avec ça, tu peux dire à Resharper de la rajouter automatiquement pour toutes les propriétés. C'est juste pour automatiqer certaines tâches redondantes. (Au cas ou tu es curieux : http://blogs.jetbrains.com/dotnet/20...n-resharper-7/ )
Quand je parlais d'esprit MVVM, c'est l'idée de faire des propriétés, d’implémenter INotifipropertyChanged et de binder sur ces propriétés. Et non pas le faire "à la main" comme tu le faisais (en mettant le datacontext du chart dans le code)
__________________
Microsoft MVP : Visual C# MCPD - Windows Phone Developer MCPD - Windows Developer 4 http://www.guruumeditation.net “If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra) |
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 24 ![]() |
Merci pour tes réponses
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com