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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Window x:Class="WpfToolkitChart.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="462" Width="737" xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit">
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="0,-28,0,28">
        <Grid Height="921">
            <chartingToolkit:Chart  Name="lineChart" Title="Line Series Demo" VerticalAlignment="Top" Margin="24,21,26,0" Height="295" >
                <chartingToolkit:LineSeries  DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}" IsSelectionEnabled="True" Title="Serie"/>
            </chartingToolkit:Chart>
            <Button Content="Serie + 5" Height="54" HorizontalAlignment="Left" Margin="147,351,0,0" Name="button1" VerticalAlignment="Top" Width="159" Click="button1_Click" />
        </Grid>
    </ScrollViewer>
 
</Window>
Code : 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
30
31
32
33
34
35
namespace WpfToolkitChart
{
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
      showColumnChart();
    }
 
    private void showColumnChart()
    {
      List<KeyValuePair<string, int>> valueList = new List<KeyValuePair<string, int>>();
      valueList.Add(new KeyValuePair<string, int>("Developer", 100));
      valueList.Add(new KeyValuePair<string, int>("Misc", 20));
      valueList.Add(new KeyValuePair<string, int>("Tester", 50));
      valueList.Add(new KeyValuePair<string, int>("QA", 30));
      valueList.Add(new KeyValuePair<string, int>("Project Manager", 40));
 
      lineChart.DataContext = valueList;      
    }
 
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        List<KeyValuePair<string, int>> list = new List<KeyValuePair<string, int>>();
        List<KeyValuePair<string, int>> serie = (List<KeyValuePair<string, int>>) lineChart.DataContext;
 
        foreach ( KeyValuePair<string, int> pair in serie )
        {
            list.Add(new KeyValuePair<string, int> (pair.Key, pair.Value + 5)); // simulation d'un changement de données
        }
        lineChart.DataContext = list;
    }
  }
}
Cette version marche tout à fait, mais j'aimerais savoir s'il n'existe pas une façon de faire du Data Binding dans le code XAML et non dans le côté C# (qui passe par un gestionnaire d'évènements). Qu'en est-il ? Je vous en remercie par avance.

PS : Je débute avec WPF mais pas C#