Программное создание диаграмм ColumnSeries WPF Toolkit

Я пытаюсь программно добавить серию столбцов в диаграмму инструментария 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);

person user474762    schedule 13.10.2010    source источник


Ответы (2)


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

person Istvan Pal    schedule 14.10.2010

Я тоже столкнулся с этой проблемой, после того как я обновил свое приложение с .NET FRAMEWORK 3.5 до 4.0, класс диаграммы внезапно перестал работать. Когда я вызвал метод Show() в форме с диаграммой с динамическими столбцами, вместо отображения нового окна выскочила эта ошибка: Ссылка на объект не установлена ​​​​на экземпляр объекта. Если я удалю ссылку itemsource на словарь или изменю динамические столбцы на статическую версию 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, например. MyChart, создайте класс, который будет возвращать окно WPF с диаграммой внутри.
  • настроить и скомпилировать проект библиотеки диаграмм как .NET Framework 3.5 (клиент)
  • вызов MyChartClass.Show(); внутри основной программы .NET Framework 4.0 будет правильно отображать диаграмму
person kimicz    schedule 21.10.2010