在一個更復雜的上下文將出現錯誤,但可在這個簡單的例子被再現:WPF工具包圖表 - Series.Clear後的NullReferenceException()
MainWindow.xaml
<Window>
<StackPanel>
<Button Click="Button_Click_1">Clear</Button>
<Button Click="Button_Click_2">Modify</Button>
<charting:Chart x:Name="chart" />
</StackPanel>
</Window>
MainWindow.xaml的.cs
public partial class MainWindow : Window
{
Random rand = new Random();
ObservableCollection<KeyValuePair<double, double>> values =
new ObservableCollection<KeyValuePair<double, double>>();
public MainWindow()
{
InitializeComponent();
values.Add(new KeyValuePair<double, double>(10, 10));
values.Add(new KeyValuePair<double, double>(20, 40));
values.Add(new KeyValuePair<double, double>(30, 90));
values.Add(new KeyValuePair<double, double>(40, 160));
values.Add(new KeyValuePair<double, double>(50, 250));
AddSeries();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
chart.Series.Clear();
AddSeries();
}
private void AddSeries()
{
var series = new LineSeries();
series.SetBinding(LineSeries.ItemsSourceProperty, new Binding());
series.DataContext = values;
series.DependentValueBinding = new Binding("Value");
series.IndependentValueBinding = new Binding("Key");
chart.Series.Add(series);
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
values[3] = new KeyValuePair<double,double>(40, rand.NextDouble() * 300);
}
}
點擊清除然後點擊修改。清除從圖表中刪除系列並創建一個新系列。修改修改了系列綁定的來源。取出的一系列調用UpdateDataPoint
在那裏我得到一個NullReferenceException:ActualDependentRangeAxis
爲空:
protected override void UpdateDataPoint(DataPoint dataPoint)
{
double maximum = ActualDependentRangeAxis.GetPlotAreaCoordinate(
ActualDependentRangeAxis.Range.Maximum).Value;
我用Data Visualization Development Releases 4.0
我試過你的3.5版本的代碼,一切正常。而我無法找到版本4,在codeplex上最後一個版本是3.5。 – vorrtex 2013-03-16 11:50:36
從這裏開始發佈:http://blogs.msdn.com/b/delay/archive/2010/04/20/phone-y-charts-silverlight-wpf-data-visualization-development-release-4- and-windows-phone-7-charting-sample.aspx – hansmaad 2013-03-16 11:58:41