djsun Posted March 13, 2010 Report Share Posted March 13, 2010 I am using 8.0.3712.22025. Here is an example:The Person type has the Name and the Age notify properties. public class Person : INotifyPropertyChanged { private int age; private string name;public Person(string name, int age) { this.name = name;this.age = age; } public event PropertyChangedEventHandler PropertyChanged;public int Age { get{ return this.age; } set{ if (this.age != value) { this.age = value;this.OnPropertyChagned("Age"); } } } public string Name { get{ return this.name; } set{ if (this.name != value) { this.name = value;this.OnPropertyChagned("Name"); } } } protected virtual void OnPropertyChagned(string propName) { var h = this.PropertyChanged;if (h != null) {h(this, new PropertyChangedEventArgs(propName)); } } }The Chart window has a simple chart, a load button to reload the data and a change button to modify the first Person's Age.< Window x:Class="ChartFXWpfApplication1.ChartNotStopListenPropChange" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="480" Width="640" xmlns:cfx="http://schemas.softwarefx.com/chartfx/wpf/80"> <Window.Resources> </Window.Resources><Grid> <cfx:Chart Name="chart1"> <cfx:Chart.AxesX> <cfx:Axis> <cfx:Axis.Title> <cfx:Title Content="Name" /> </cfx:Axis.Title> <cfx:Axis.Labels> <cfx:AxisLabelAttributes BindingPath="Name" /> </cfx:Axis.Labels> </cfx:Axis> </cfx:Chart.AxesX> <cfx:Chart.AxesY> <cfx:Axis> <cfx:Axis.Title> <cfx:Title Content="Age" /> </cfx:Axis.Title> </cfx:Axis> </cfx:Chart.AxesY> </cfx:Chart> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Bottom"> <Button x:Name="Reload" Content="Reload" Click="Reload_Click"/> <Button x:Name="Change" Content="Change" Click="Change_Click"/> </StackPanel></Grid> </ Window>And the code behind: public partial class ChartNotStopListenPropChange : Window{ private Random r = new Random(); private List<Person> source = null;public ChartNotStopListenPropChange() { InitializeComponent(); this.source = new List<Person>(new[] { new Person("Foo", r.Next(1, 100)) });this.load(); } private void AddSeries(IEnumerable<Person> source, Gallery gallery, int? index) { var series1 = new SeriesAttributes(); series1.ItemsSource = source; series1.Gallery = gallery;series1.Content = "Person";series1.BindingPath = "Age"; chart1.Series.Add(series1); } private void Change_Click(object sender, RoutedEventArgs e) { this.source[0].Age += 1; } private void Clear() { foreach (var s in chart1.Series) {s.ItemsSource = null; } chart1.Series.Clear();chart1.ItemsSource = null; } private void load() { Clear();AddSeries(this.source, Gallery.Bar, 1); } private void Reload_Click(object sender, RoutedEventArgs e) { this.load(); } } To repro:1. Start the application2. Click the Reload button3. Click the Change buttonAt step 3, NullReferenceException was unhandled. Quote Link to comment Share on other sites More sharing options...
JuanC Posted March 17, 2010 Report Share Posted March 17, 2010 We have fixed this issue in build 3728 Regards, JuanC Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.