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