Программно создавать диаграммы ColumnSeries WPF Toolkit - PullRequest
1 голос
/ 13 октября 2010

Я пытаюсь программно добавить серию столбцов в диаграмму инструментария wpf.Мой xaml - пустой график.Код приводит к необработанному исключению, ссылка на объект не установлена ​​на экземпляр объекта.Любые подсказки, почему это не работает?

<charting:Chart Name="MyChart">

мой код позади

List<KeyValuePair<int,int>> testList = new List<KeyValuePair<int,int>>();

testList.Add(new KeyValuePair<int,int> (1,2));

testList.Add(new KeyValuePair<int,int> (2,3)); 

ColumnSeries mySeries = new ColumnSeries();

mySeries.Title = "TEST";


mySeries.IndependentValueBinding = new Binding("key");

mySeries.DependentValueBinding = new Binding("value");

mySeries.ItemsSource = testList;

MyChart.Series.Add(mySeries);

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Я тоже пришел к этой проблеме, после того как я обновил свое приложение с .NET FRAMEWORK 3.5 до 4.0, внезапно класс диаграммы перестал работать. Когда я вызвал метод Show () в форме, в которой была диаграмма с динамическими сериями столбцов, вместо отображения нового окна всплыла эта ошибка: ссылка на объект не установлена ​​для экземпляра объекта. Если я удаляю ссылку источника ресурсов на Словарь или изменяю динамическую серию столбцов на статическую версию XAML, она работает, но эта статическая версия непригодна для большинства пользователей.

у кого-нибудь есть идеи, как реализовать это непосредственно в WPF .NET Framework 4.0? или его ошибка в wpftoolkit, предназначенная для .NET 3.5?

public void SetChartData(IDictionary<string, IDictionary<string, double>> prod, String title, String labelAxis)
        {   
           chart.Title = title;
           LinearAxis ca = new LinearAxis();
           ca.Orientation = AxisOrientation.Y;
           ca.Minimum = 0;
           chart.Axes.Add(ca);
           foreach (KeyValuePair<string, IDictionary<string, double>> kvp in prod)
           {
               ColumnSeries cser = new ColumnSeries();
               cser.Title = kvp.Key;
             cser.DependentValueBinding = new Binding("Value");
              cser.IndependentValueBinding = new Binding("Key");
              cser.ItemsSource = kvp.Value;
               chart.Series.Add(cser);
           }
        }

Я нашел один возможный обходной путь:

  • создать новую библиотеку проектов WPF для ex. MyChart, создайте класс, который будет возвращать окно WPF с диаграммой внутри.
  • setup и скомпилируйте проект библиотеки диаграмм как .NET Framework 3.5 (клиент)
  • вызов MyChartClass.Show (); внутри основной программы .NET Framework 4.0 будет правильно отображать график
0 голосов
/ 14 октября 2010

Вы должны использовать «Ключ» вместо «ключ» и «Значение» вместо «значение» в привязке.

...