以编程方式创建ColumnSeries WPF Toolkit图表

时间:2010-10-13 16:51:47

标签: c# wpf wpftoolkit

我正在尝试以编程方式将列系列添加到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 个答案:

答案 0 :(得分:1)

在将我的应用程序从.NET FRAMEWORK 3.5升级到4.0之后,我也遇到了这个问题,突然之间图表类停止了工作。 当我在具有动态columnseries的图表的窗体上调用Show()方法时,而不是显示新窗口,弹出此错误:对象引用未设置为对象的实例。 如果我将itemsource链接删除到Dictionary,或将动态列系列更改为静态XAML版本,它可以工作,但是这个静态版本对于大多数用户来说是不可用的。

任何人都知道如何在WPF .NET Framework 4.0中直接实现它?或者它的目标是.NET 3.5的wpftoolkit中的错误?

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);
           }
        }

我找到了一个可能的解决方法:

  • 为ex创建新的WPF项目库。 MyChart,创建一个类,它将返回带有图表的WPF窗口。
  • 设置并将图表库项目编译为.NET Framework 3.5 (客户端)
  • 调用MyChartClass.Show();在主程序内部.NET Framework 4.0将正确显示图表

答案 1 :(得分:0)

您应该在绑定中使用“Key”而不是“key”而不是“value”。