Hi,
I'm using Telerik RadControls Q3 2012. After the update, I plan to add a Bollinger Band to a ChartView. However, after several trials, it always hangs the application by System.NullReferenceException: Object reference not set to an instance of an object.
The ChartView I'm using is a simple LineSeries chart in XAML:
<telerik:RadCartesianChart Margin="5" Grid.Column="0" x:Name="PriceChart" Padding="0,0,0,0"> <telerik:RadCartesianChart.HorizontalAxis> <telerik:DateTimeContinuousAxis LabelFormat="d-MMM-yy" MajorStep="1" MajorStepUnit="Month" GapLength="0.8" PlotMode="OnTicks" /> </telerik:RadCartesianChart.HorizontalAxis> <telerik:RadCartesianChart.VerticalAxis> <telerik:LinearAxis BorderBrush="DimGray" BorderThickness="0.5" /> </telerik:RadCartesianChart.VerticalAxis> <telerik:RadCartesianChart.Series> <chartView:LineSeries ItemsSource="{Binding ChartData}" CategoryBinding="Date" ValueBinding="Price" Stroke="Black" StrokeThickness="0.5"/> </telerik:RadCartesianChart.Series> <telerik:RadCartesianChart.Grid> <telerik:CartesianChartGrid MajorLinesVisibility="Y"/> </telerik:RadCartesianChart.Grid> </telerik:RadCartesianChart>
This is how I add the Bollinger Band to the chart:
LineSeries lineSeries = this.PriceChart.Series[0] as LineSeries; if ((lineSeries != null) && (lineSeries.ItemsSource != null)) { BollingerBandsIndicator indicator = new BollingerBandsIndicator(); indicator.Period = 5; indicator.StandardDeviations = 2; indicator.CategoryBinding = lineSeries.CategoryBinding; indicator.ValueBinding = lineSeries.ValueBinding; indicator.ItemsSource = lineSeries.ItemsSource; indicator.Stroke = Brushes.Red; indicator.LowerBandStroke = Brushes.Red; indicator.StrokeThickness = 1; this.PriceChart.Indicators.Add(indicator); }
And this is the StackTrace for the Exception caught:
at Telerik.Windows.Controls.ChartView.BollingerBandsIndicatorDataSource.BindCore() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\DataBinding\DataSources\Financial\BollingerBandsIndicatorDataSource.cs:line 63<BR> at Telerik.Windows.Controls.ChartView.ChartSeriesDataSource.Bind() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\DataBinding\DataSources\ChartSeriesDataSource.cs:line 235<BR> at Telerik.Windows.Controls.ChartView.ChartSeriesDataSource.Rebind(Boolean itemsSourceChanged, IEnumerable newSource) in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\DataBinding\DataSources\ChartSeriesDataSource.cs:line 81<BR> at Telerik.Windows.Controls.ChartView.ChartSeriesDataSource.set_ItemsSource(IEnumerable value) in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\DataBinding\DataSources\ChartSeriesDataSource.cs:line 54<BR> at Telerik.Windows.Controls.ChartView.ChartSeries.InitDataBinding() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\Common\ChartSeries.cs:line 316<BR> at Telerik.Windows.Controls.ChartView.IndicatorBase.InitDataBinding() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\CartesianChart\Indicators\IndicatorBase.cs:line 94<BR> at Telerik.Windows.Controls.ChartView.ValueIndicatorBase.InitDataBinding() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\CartesianChart\Indicators\ValueIndicatorBase.cs:line 50<BR> at Telerik.Windows.Controls.ChartView.ChartSeries.OnApplyTemplate() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\Common\ChartSeries.cs:line 239<BR> at Telerik.Windows.Controls.ChartView.LineIndicatorBase.OnApplyTemplate() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\CartesianChart\Indicators\LineIndicatorBase.cs:line 112<BR> at Telerik.Windows.Controls.ChartView.BollingerBandsIndicator.OnApplyTemplate() in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\CartesianChart\Indicators\BollingerBandsIndicator.cs:line 125<BR> at System.Windows.FrameworkElement.ApplyTemplate()<BR> at Telerik.Windows.Controls.ChartView.RadChartBase.OnPresenterAdded(ChartElementPresenter presenter) in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\RadChartBase.cs:line 405<BR> at Telerik.Windows.Controls.ChartView.PresenterCollection`1.InsertItem(Int32 index, T item) in c:\TB\105\WPF_Scrum\Release_WPF\Sources\Development\Controls\Chart\Visualization\Common\PresenterCollection.cs:line 34<BR> at STA.Modules.MarketData.Views.PairAnalytics.PairAnalyticsDetailPairView.<PostQueryChartData>b__0() in C:\Segantii\Development\Source Control\Projects\Odin\trunk\Source Codes\SegantiiTradingAnalytics\STA.Modules.MarketData\Views\PairAnalytics\PairAnalyticsDetailPairView.xaml.cs:line 70<BR> at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)<BR> at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)<BR> at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)<BR> at System.Windows.Threading.DispatcherOperation.InvokeImpl()<BR> at System.Threading.ExecutionContext.runTryCode(Object userData)<BR> at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)<BR> at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)<BR> at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)<BR> at System.Windows.Threading.DispatcherOperation.Invoke()<BR> at System.Windows.Threading.Dispatcher.ProcessQueue()<BR> at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<BR> at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<BR> at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)<BR> at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)<BR> at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)<BR> at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)<BR> at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)<BR> at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)<BR> at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)<BR> at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)<BR> at System.Windows.Application.RunInternal(Window window)<BR> at System.Windows.Application.Run()<BR> at SegantiiTradingAnalytics.App.Main() in C:\Segantii\Development\Source Control\Projects\Odin\trunk\Source Codes\SegantiiTradingAnalytics\SegantiiTradingAnalytics\obj\x86\Debug\App.g.cs:line 0<BR> at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)<BR> at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)<BR> at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()<BR> at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)<BR> at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)<BR> at System.Threading.ThreadHelper.ThreadStart()Any help will be welcome.
Many thanks!
Frankie