我正在尝试以编程方式将列系列添加到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);
答案 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);
}
}
我找到了一个可能的解决方法:
答案 1 :(得分:0)
您应该在绑定中使用“Key”而不是“key”而不是“value”。