Comment mettre à jour un graphique WPF lorsque la collection change? J'utilise le graphique WPF (System.Windows.Controls.DataVisualization.Toolkit.dll version 3.5.50211.1) pour tracer quelques données simples. Les classes pour les données ressemblent à ceci:Comment actualiser le graphique WPF que j'utilise pour afficher des données (graphique de la boîte à outils WPF)
public class EngineMeasurementCollection : Collection<EngineMeasurement>
{
}
public class EngineMeasurement
{
public int TimeStamp { get; set;}
public int Speed { get; set; }
public int Torque { get; set; }
public int Power { get; set; }
}
Dans ma forme principale, je reçois de nouvelles données sur un rappel d'événement. Cela revient sur un autre fil. Je regarde les données pour voir si elle a un nouveau TimeStamp. Si c'est le cas, je l'ajoute à ma collection. Je puis consciencieusement appeler
Dispatcher.Invoke(myDelegate, DispatcherPriority.Normal,null)
pour me remettre sur le thread graphique. J'appelle ensuite:
m_ctrlLineSeriesTorque.ItemsSource = m_TorqueCollection;
pour essayer et obtenir le tableau pour mettre à jour. J'ai vérifié que je reçois dans ce code. J'ai également vérifié que je peux afficher un diagramme si je jette juste quelques valeurs dans le contructor de EngineMeasurementCollection. Comment mettre le graphique à jour lorsque j'ajoute plus de valeurs à la collection?
Quelque part, j'ai vu qu'il pourrait y avoir une méthode "Actualiser" sur le graphique lui-même. Je ne vois pas ça. En outre, j'ai vu que EngineMeasurementCollection devrait être une "collection observable" et que EngineMeasurement devrait implémenter une interface. Vrai?
Merci, Dave
Il m'apparaît que ma CollectionMoteurCommerce, m_TorqueCollection est définie dans MainWindow.xaml.cs et j'y accède à partir d'un événement qui est appelé sur un thread différent. Probablement, je dois faire une sorte de verrouillage de thread lorsque j'ajoute EngineMeasurements à la collection? Y a-t-il des meilleures pratiques ici? – Dave