DaWanderer Posted February 11, 2008 Report Share Posted February 11, 2008 I receive an IndexOutOfRangeException when removing a certain SeriesAttributes from the first pane of my chart (magic number seems to be between 4 and 6 before the exception is thrown). My chart has multiple panes, and I add several series with the following code: chart.Series.Add(series);chart.Panes[0].Series.Add(series); and remove the same series with this code: chart.Panes[0].Series.Remove(series);chart.Series.Remove(series); Is this not the correct way to add and remove series from a single pane? I've tried wrapping my Add/Remove calls in DispatcherOperationCallback methods and invoke them with the Dispatcher of the chart object, but no luck there.Here's the exception details: System.IndexOutOfRangeException was unhandled Message="Index was outside the bounds of the array." Source="ChartFX.WPF" StackTrace: at at.c(Int32 A_0) at b8.a(PaintMark A_0, t A_1, Double A_2, Double A_3, ao[] A_4, LogicalItemCollection A_5, LogicalItemCollection A_6) at b8.a(t A_0, Double A_1, Double A_2) at b8.f(Double A_0, Double A_1) at b8.a(Double A_0, Double A_1, Boolean A_2) at ai.OnRenderSizeChanged(SizeChangedInfo sizeInfo) at System.Windows.ContextLayoutManager.fireSizeChangedEvents() at System.Windows.ContextLayoutManager.UpdateLayout() at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg) at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork() at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks() at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget) at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter) at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run(Window window) at System.Windows.Application.Run() at Phoenix.Windows.App.Main() in C:\MIke\Work Projects\Phoenix\Phoenix.Windows\obj\Debug\App.g.cs:line 0 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: Quote Link to comment Share on other sites More sharing options...
JuanC Posted February 14, 2008 Report Share Posted February 14, 2008 We will try to reproduce this error but in the meantime can you clarify the following 1) Initial state of the chart: Does it have more than one pane, which of these settings are you doing in XAML/PageLoaded/Buttons 2) Does each series has an independent ItemsSource or do they represent different properties on the Chart's ItemsSource Regards, JuanC Quote Link to comment Share on other sites More sharing options...
DaWanderer Posted February 14, 2008 Author Report Share Posted February 14, 2008 JuanC, The chart has a single pane with each series being added to the chart in the code (on the DataContextChanged event of the page) Each series has its own independent ItemsSource, all using the same Property Thanks, Mike Quote Link to comment Share on other sites More sharing options...
mr.mghenry Posted October 7, 2008 Report Share Posted October 7, 2008 I'm having a similiar problem. I have a list (IList<EngineeringChartDto>) of objects (1215 of them) that I"m adding to the chart.ItemSource property. If I sort this list by AccountDate before I set the ItemSource on the chart I get the Index outside the bounds of the array error message. If I don't sort this list, it puts the items in unordered, meaning that a date time value of 1/1/2008 will show up on the right side of 6/6/2012 but does show the chart, but again, values are out of order. I'm using the following code to set and transform the items and create the chart below..chart.Series.Clear(); chart.DataTransforms.Clear(); chart.ItemsSource = null; chart.Titles.Clear(); chart.AxisY.Title.Content = "Volumes"; CrosstabTransform dataTransform = new CrosstabTransform(); dataTransform.ValuePath = "Volume"; dataTransform.RowPath = "AccountDate"; dataTransform.ColumnPath = "ForecastYear"; chart.DataTransforms.Add(dataTransform); chart.AxisX.Labels.BindingPath = "AccountDate"; chart.AxisX.AutoScale = true; chart.Gallery = Gallery.Bar; chart.AllSeries.Stacked = true; chart.AllSeries.StackedStyle = StackedStyle.Normal; chart.ItemsSource = items; chart.Titles.Add(new Title("Project Volumes"));public class EngineeringChartDto { private string budgetEntity; private string commodityType; private DateTime accountDate; private double volume; private int forecastYear; public int ForecastYear { get { return forecastYear; } } public EngineeringChartDto(string budgetEntity, string commodityType, DateTime accountDate, double volume, int forecastYear) { this.budgetEntity = budgetEntity; this.forecastYear = forecastYear; this.commodityType = commodityType; this.accountDate = accountDate; this.volume = volume; } public string BudgetEntity { get { return budgetEntity; } } public string CommodityType { get { return commodityType; } } public DateTime AccountDate { get { return accountDate; } } public double Volume { get { return volume; } } } Can you help me...thanks Mike. Quote Link to comment Share on other sites More sharing options...
mr.mghenry Posted October 7, 2008 Report Share Posted October 7, 2008 Also did I mention that my list has 2000 items. Thanks Mike 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.