Je recode actuellement un graphique à barres dans mon application pour faire usage de la classe Chart
dans le WPF Toolkit. À l'aide MVVM, je lie le ItemsSource
d'un ColumnSeries
dans mon graphique à une propriété sur mon modèle de vue. Voici le XAML pertinent:La mise à jour de liaison ajoute des séries de nouvelles au graphique WPF Toolkit (au lieu de remplacer/mettre à jour série)
<charting:Chart>
<charting:ColumnSeries ItemsSource="{Binding ScoreDistribution.ClassScores}"
IndependentValuePath="ClassName" DependentValuePath="Score"/>
</charting:Chart>
Et la propriété sur le viewmodel:
// NB: viewmodel derived from Josh Smith's BindableObject
public class ExamResultsViewModel : BindableObject
{
// ...
private ScoreDistributionByClass _scoreDistribution;
public ScoreDistributionByClass ScoreDistribution
{
get
{
return _scoreDistribution;
}
set
{
if (_scoreDistribution == value)
{
return;
}
_scoreDistribution = value;
RaisePropertyChanged(() => ScoreDistribution);
}
}
Cependant, quand je mets à jour la propriété ScoreDistribution
(en le plaçant à un nouvel objet ScoreDistribution
), le graphique obtient un série supplémentaire (basée sur la nouvelle partition ScoreDistribution) ainsi que de conserver la série originale (basée sur la précédente ScoreDistribution).
Pour illustrer cela, voici quelques captures d'écran montrant le graphique avant une mise à jour (avec un seul point de données dans ScoreDistribution.ClassScores
) et après (maintenant avec 3 points de données en ScoreDistribution.ClassScores
):
maintenant, je me rends compte qu'il ya d'autres moyens que je pourrais faire cela (par exemple, modifier le contenu de l'objet ScoreDistribution
d'origine plutôt que de le remplacer entièrement), mais je ne comprends pas pourquoi ça va mal dans son fo courant rm. Quelqu'un peut-il aider?
Votre solution de contournement fonctionne très bien. Je luttais avec le même bug dans WinRT editon de la boîte à outils. Merci. – Bart
@freundblase J'ai aussi le même problème. J'ai téléchargé le code source de wpf toolkit mais je n'ai pas pu le compiler, beaucoup d'erreurs. Pouvez-vous s'il vous plaît fournir e la DLL que vous utilisez. –