I'm new to the Silverlight controls, and I'm attempting to bind an xml file to a chart with 2 Y axes and hitting a runtime error. I'm using a mix of 2 different training materials and not sure if I'm mixing code that I shouldn't. For the binding I've looked at the 06_XML project in the new courseware material and forum item http://www.telerik.com/community/forums/silverlight/chart/how-to-bind-a-xml-file-to-silverlight-pie-chart.aspx. For the multiple Y Axis use case I've looked at the demo on http://demos.telerik.com/silverlight/#Chart/MultipleYAxes.
I can see in the debugger that the data is being loaded from the xml file, but the ItemSource assignment is cuainsg a crashing. The error message is "System.FormatException: Input string was not in a correct format. at System.Number.ParseDouble(String value, NumberStyles options,"
I'm pretty sure the issue is with the xaml - I've tried several combinations from the use cases (xaml and telerik objects are my weakest points right now).
Anyhelp is appreciated.
Here's my current MainPage.xaml
The MarketDate class and marketdata.xml are here:
I can see in the debugger that the data is being loaded from the xml file, but the ItemSource assignment is cuainsg a crashing. The error message is "System.FormatException: Input string was not in a correct format. at System.Number.ParseDouble(String value, NumberStyles options,"
I'm pretty sure the issue is with the xaml - I've tried several combinations from the use cases (xaml and telerik objects are my weakest points right now).
Anyhelp is appreciated.
Here's my current MainPage.xaml
<
UserControl
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
x:Class
=
"SilverlightCharts.MainPage"
xmlns:control
=
"clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Charting"
xmlns:chart
=
"clr-namespace:Telerik.Windows.Controls.Charting;assembly=Telerik.Windows.Controls.Charting"
mc:Ignorable
=
"d"
d:DesignHeight
=
"300"
d:DesignWidth
=
"400"
>
<
Grid
x:Name
=
"LayoutRoot"
Background
=
"White"
>
<
telerik:RadChart
x:Name
=
"MarketReplay"
>
<
telerik:RadChart.SeriesMappings
>
<
telerik:SeriesMapping
>
<
telerik:SeriesMapping.SeriesDefinition
>
<
telerik:BarSeriesDefinition
AxisName
=
"Volume"
/>
</
telerik:SeriesMapping.SeriesDefinition
>
<
telerik:ItemMapping
DataPointMember
=
"YValue"
FieldName
=
"volume"
/>
<
telerik:ItemMapping
DataPointMember
=
"XValue"
FieldName
=
"period"
/>
</
telerik:SeriesMapping
>
<
telerik:SeriesMapping
>
<
telerik:SeriesMapping.SeriesDefinition
>
<
telerik:LineSeriesDefinition
AxisName
=
"Price"
/>
</
telerik:SeriesMapping.SeriesDefinition
>
<
telerik:ItemMapping
DataPointMember
=
"YValue"
FieldName
=
"price"
/>
<
telerik:ItemMapping
DataPointMember
=
"XValue"
FieldName
=
"period"
/>
</
telerik:SeriesMapping
>
</
telerik:RadChart.SeriesMappings
>
</
telerik:RadChart
>
</
Grid
>
</
UserControl
>
MainPage.xaml.cs is here
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Xml.Linq;
using Telerik.Windows.Controls.Charting;
namespace SilverlightCharts {
public partial class MainPage : UserControl {
public MainPage() {
InitializeComponent();
XDocument document = XDocument.Load("marketdata.xml");
List<
MarketData
> mktData =
(from list in document.Descendants("item")
select new MarketData() {
period = list.Attribute("period").Value,
volume = list.Attribute("volume").Value,
price = list.Attribute("price").Value,
}).ToList();
this.MarketReplay.ItemsSource = mktData;
}
}
}
The MarketDate class and marketdata.xml are here:
namespace SilverlightCharts {
public class MarketData {
public string period { get; set; }
public string volume { get; set; }
public string price { get; set; }
}
}
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
items
security
=
"ibm"
>
<
item
period
=
"3/1/2011"
volume
=
"15"
price
=
"89.11"
/>
<
item
period
=
"3/2/2011"
volume
=
"5"
price
=
"84.55"
/>
<
item
period
=
"3/3/2011"
volume
=
"34"
price
=
"90.01"
/>
<
item
period
=
"3/4/2011"
volume
=
"11"
price
=
"91.11"
/>
<
item
period
=
"3/5/2011"
volume
=
"11"
price
=
"91.01"
/>
<
item
period
=
"3/8/2011"
volume
=
"29"
price
=
"88.01"
/>
<
item
period
=
"3/9/2011"
volume
=
"33"
price
=
"75.21"
/>
<
item
period
=
"3/10/2011"
volume
=
"31"
price
=
"34.99"
/>
<
item
period
=
"3/11/2011"
volume
=
"40"
price
=
"101"
/>
<
item
period
=
"3/12/2011"
volume
=
"27"
price
=
"101"
/>
</
items
>