Data Binding to Nested Collections

The purpose of this tutorial is to show you how to populate RadChart with data in a form of nested collections using Data Binding with Manual Series Mapping.

In order to bind RadChart to nested collections:

1. Create a new business object and name it TradeData.

using System; 
using System.Collections.ObjectModel; 
namespace Silverlight.Help.RadChartSamples 
{ 
    public class TradeData 
    { 
        public string Emission 
        { 
            get; 
            set; 
        } 
        public DateTime FromDate 
        { 
            get; 
            set; 
        } 
        public DateTime ToDate 
        { 
            get; 
            set; 
        } 
        public double Open 
        { 
            get; 
            set; 
        } 
        public double High 
        { 
            get; 
            set; 
        } 
        public double Low 
        { 
            get; 
            set; 
        } 
        public double Close 
        { 
            get; 
            set; 
        } 
        public double Volume 
        { 
            get; 
            set; 
        } 
        public static ObservableCollection<TradeData> GetWeeklyData( string code ) 
        { 
            ObservableCollection<TradeData> tradeData; 
            if ( code == "CSCO" ) 
            { 
                tradeData = new ObservableCollection<TradeData>() { 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 10 ), Open = 21.9800, High = 22.1200, Low = 21.5000, Close = 21.6400, Volume = 46602230 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 11 ), Open = 21.4700, High = 21.5300, Low = 21.0600, Close = 21.1700, Volume = 53545300 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 12 ), Open = 21.2300, High = 21.6100, Low = 21.1800, Close = 21.4300, Volume = 49330780 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 13 ), Open = 21.5400, High = 21.6500, Low = 21.3400, Close = 21.5100, Volume = 38914230 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 14 ), Open = 21.4700, High = 21.5500, Low = 21.0000, Close = 21.3100, Volume = 35131850 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 17 ), Open = 20.9400, High = 20.9600, Low = 20.6800, Close = 20.7300, Volume = 32361720 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 18 ), Open = 20.8200, High = 21.1500, Low = 20.7900, Close = 21.0100, Volume = 33300840 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 19 ), Open = 20.7600, High = 21.4400, Low = 20.7400, Close = 21.2400, Volume = 39197070 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 20 ), Open = 21.2500, High = 21.9600, Low = 21.2000, Close = 21.8900, Volume = 55194380 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 21 ), Open = 22.0800, High = 22.2700, Low = 21.7700, Close = 22.1900, Volume = 56572840 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 24 ), Open = 22.2200, High = 22.6400, Low = 21.9300, Close = 22.0600, Volume = 52670800 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 25 ), Open = 22.1550, High = 22.2500, Low = 21.8500, Close = 22.0000, Volume = 28401080 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 26 ), Open = 21.9100, High = 22.0000, Low = 21.8100, Close = 21.9300, Volume = 33523570 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 27 ), Open = 21.6700, High = 21.9100, Low = 21.4700, Close = 21.8800, Volume = 30278510 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 28 ), Open = 22.1500, High = 22.3500, Low = 21.8000, Close = 22.0000, Volume = 35933920 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 8, 31 ), Open = 21.7400, High = 21.8400, Low = 21.5100, Close = 21.6000, Volume = 31401760 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 9, 1 ), Open = 21.4600, High = 21.8700, Low = 21.0800, Close = 21.1700, Volume = 48741440 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 9, 2 ), Open = 21.0900, High = 21.7300, Low = 21.0700, Close = 21.5500, Volume = 40225600 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 9, 3 ), Open = 21.7300, High = 21.9000, Low = 21.3400, Close = 21.4900, Volume = 33830210 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 9, 4 ), Open = 21.5900, High = 21.9600, Low = 21.4000, Close = 21.8400, Volume = 28951200 }, 
                    new TradeData() { Emission="CSCO", FromDate = new DateTime( 2009, 9, 8 ), Open = 22.0000, High = 22.2100, Low = 21.7900, Close = 21.9200, Volume = 37912164 } }; 
            } 
            else 
            { 
                tradeData = new ObservableCollection<TradeData>() { 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 10 ), Open = 23.4600, High = 23.5500, Low = 23.3000, Close = 23.4200, Volume = 35258950 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 11 ), Open = 23.3200, High = 23.4000, Low = 23.0500, Close = 23.1300, Volume = 33611790 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 12 ), Open = 23.1300, High = 23.9000, Low = 23.0300, Close = 23.5300, Volume = 61936270 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 13 ), Open = 23.6300, High = 23.8500, Low = 23.4000, Close = 23.6200, Volume = 38951990 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 14 ), Open = 23.6200, High = 23.8000, Low = 23.5100, Close = 23.6900, Volume = 46328540 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 17 ), Open = 23.3200, High = 23.6000, Low = 23.2300, Close = 23.2500, Volume = 42462890 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 18 ), Open = 23.2900, High = 23.6520, Low = 23.2700, Close = 23.5800, Volume = 38831620 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 19 ), Open = 23.2500, High = 23.7200, Low = 23.2500, Close = 23.6500, Volume = 41814320 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 20 ), Open = 23.6000, High = 23.8700, Low = 23.5400, Close = 23.6700, Volume = 39502680 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 21 ), Open = 23.9300, High = 24.4200, Low = 23.7700, Close = 24.4100, Volume = 68995700}, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 24 ), Open = 24.4100, High = 24.7326, Low = 24.2800, Close = 24.6400, Volume = 54159300 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 25 ), Open = 24.6000, High = 24.8200, Low = 24.4600, Close = 24.6400, Volume = 43961480 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 26 ), Open = 24.5900, High = 24.7500, Low = 24.4200, Close = 24.5500, Volume = 41060010 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 27 ), Open = 24.4100, High = 24.7800, Low = 24.3000, Close = 24.6900, Volume = 45433940 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 28 ), Open = 25.0700, High = 25.4900, Low = 24.6100, Close = 24.6800, Volume = 55789640 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 8, 31 ), Open = 24.5700, High = 24.8500, Low = 24.2900, Close = 24.6500, Volume = 49582950 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 9, 1 ), Open = 24.3500, High = 24.7400, Low = 23.9000, Close = 24.0000, Volume = 62571800 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 9, 2 ), Open = 23.8200, High = 24.1400, Low = 23.7800, Close = 23.8600, Volume = 40726040 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 9, 3 ), Open = 23.9100, High = 24.1400, Low = 23.7600, Close = 24.1100, Volume = 34110810 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 9, 4 ), Open = 24.0900, High = 24.8001, Low = 24.0800, Close = 24.6200, Volume = 44987570 }, 
                    new TradeData() { Emission="MSFT", FromDate = new DateTime( 2009, 9, 8 ), Open = 24.6200, High = 24.8400, Low = 24.4100, Close = 24.8200, Volume = 52243880 } }; 
            } 
            return tradeData; 
        } 
    } 
} 
Imports System 
Imports System.Collections.ObjectModel 
Namespace Silverlight.Help.RadChartSamples 
 Public Class TradeData 
  Public Property Emission() As String 
   Get 
    Return m_Emission 
   End Get 
   Set 
    m_Emission = Value 
   End Set 
  End Property 
  Private m_Emission As String 
  Public Property FromDate() As DateTime 
   Get 
    Return m_FromDate 
   End Get 
   Set 
    m_FromDate = Value 
   End Set 
  End Property 
  Private m_FromDate As DateTime 
  Public Property ToDate() As DateTime 
   Get 
    Return m_ToDate 
   End Get 
   Set 
    m_ToDate = Value 
   End Set 
  End Property 
  Private m_ToDate As DateTime 
  Public Property Open() As Double 
   Get 
    Return m_Open 
   End Get 
   Set 
    m_Open = Value 
   End Set 
  End Property 
  Private m_Open As Double 
  Public Property High() As Double 
   Get 
    Return m_High 
   End Get 
   Set 
    m_High = Value 
   End Set 
  End Property 
  Private m_High As Double 
  Public Property Low() As Double 
   Get 
    Return m_Low 
   End Get 
   Set 
    m_Low = Value 
   End Set 
  End Property 
  Private m_Low As Double 
  Public Property Close() As Double 
   Get 
    Return m_Close 
   End Get 
   Set 
    m_Close = Value 
   End Set 
  End Property 
  Private m_Close As Double 
  Public Property Volume() As Double 
   Get 
    Return m_Volume 
   End Get 
   Set 
    m_Volume = Value 
   End Set 
  End Property 
  Private m_Volume As Double 
  Public Shared Function GetWeeklyData(code As String) As ObservableCollection(Of TradeData) 
   Dim tradeData As ObservableCollection(Of TradeData) 
   If code = "CSCO" Then 
    tradeData = New ObservableCollection(Of TradeData)() With { _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 10), _ 
      .Open = 21.98, _ 
      .High = 22.12, _ 
      .Low = 21.5, _ 
      .Close = 21.64, _ 
      .Volume = 46602230 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 11), _ 
      .Open = 21.47, _ 
      .High = 21.53, _ 
      .Low = 21.06, _ 
      .Close = 21.17, _ 
      .Volume = 53545300 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 12), _ 
      .Open = 21.23, _ 
      .High = 21.61, _ 
      .Low = 21.18, _ 
      .Close = 21.43, _ 
      .Volume = 49330780 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 13), _ 
      .Open = 21.54, _ 
      .High = 21.65, _ 
      .Low = 21.34, _ 
      .Close = 21.51, _ 
      .Volume = 38914230 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 14), _ 
      .Open = 21.47, _ 
      .High = 21.55, _ 
      .Low = 21.0, _ 
      .Close = 21.31, _ 
      .Volume = 35131850 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 17), _ 
      .Open = 20.94, _ 
      .High = 20.96, _ 
      .Low = 20.68, _ 
      .Close = 20.73, _ 
      .Volume = 32361720 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 18), _ 
      .Open = 20.82, _ 
      .High = 21.15, _ 
      .Low = 20.79, _ 
      .Close = 21.01, _ 
      .Volume = 33300840 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 19), _ 
      .Open = 20.76, _ 
      .High = 21.44, _ 
      .Low = 20.74, _ 
      .Close = 21.24, _ 
      .Volume = 39197070 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 20), _ 
      .Open = 21.25, _ 
      .High = 21.96, _ 
      .Low = 21.2, _ 
      .Close = 21.89, _ 
      .Volume = 55194380 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 21), _ 
      .Open = 22.08, _ 
      .High = 22.27, _ 
      .Low = 21.77, _ 
      .Close = 22.19, _ 
      .Volume = 56572840 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 24), _ 
      .Open = 22.22, _ 
      .High = 22.64, _ 
      .Low = 21.93, _ 
      .Close = 22.06, _ 
      .Volume = 52670800 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 25), _ 
      .Open = 22.155, _ 
      .High = 22.25, _ 
      .Low = 21.85, _ 
      .Close = 22.0, _ 
      .Volume = 28401080 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 26), _ 
      .Open = 21.91, _ 
      .High = 22.0, _ 
      .Low = 21.81, _ 
      .Close = 21.93, _ 
      .Volume = 33523570 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 27), _ 
      .Open = 21.67, _ 
      .High = 21.91, _ 
      .Low = 21.47, _ 
      .Close = 21.88, _ 
      .Volume = 30278510 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 28), _ 
      .Open = 22.15, _ 
      .High = 22.35, _ 
      .Low = 21.8, _ 
      .Close = 22.0, _ 
      .Volume = 35933920 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 8, 31), _ 
      .Open = 21.74, _ 
      .High = 21.84, _ 
      .Low = 21.51, _ 
      .Close = 21.6, _ 
      .Volume = 31401760 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 9, 1), _ 
      .Open = 21.46, _ 
      .High = 21.87, _ 
      .Low = 21.08, _ 
      .Close = 21.17, _ 
      .Volume = 48741440 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 9, 2), _ 
      .Open = 21.09, _ 
      .High = 21.73, _ 
      .Low = 21.07, _ 
      .Close = 21.55, _ 
      .Volume = 40225600 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 9, 3), _ 
      .Open = 21.73, _ 
      .High = 21.9, _ 
      .Low = 21.34, _ 
      .Close = 21.49, _ 
      .Volume = 33830210 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 9, 4), _ 
      .Open = 21.59, _ 
      .High = 21.96, _ 
      .Low = 21.4, _ 
      .Close = 21.84, _ 
      .Volume = 28951200 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "CSCO", _ 
      .FromDate = New DateTime(2009, 9, 8), _ 
      .Open = 22.0, _ 
      .High = 22.21, _ 
      .Low = 21.79, _ 
      .Close = 21.92, _ 
      .Volume = 37912164 _ 
     } _ 
    } 
   Else 
    tradeData = New ObservableCollection(Of TradeData)() With { _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 10), _ 
      .Open = 23.46, _ 
      .High = 23.55, _ 
      .Low = 23.3, _ 
      .Close = 23.42, _ 
      .Volume = 35258950 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 11), _ 
      .Open = 23.32, _ 
      .High = 23.4, _ 
      .Low = 23.05, _ 
      .Close = 23.13, _ 
      .Volume = 33611790 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 12), _ 
      .Open = 23.13, _ 
      .High = 23.9, _ 
      .Low = 23.03, _ 
      .Close = 23.53, _ 
      .Volume = 61936270 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 13), _ 
      .Open = 23.63, _ 
      .High = 23.85, _ 
      .Low = 23.4, _ 
      .Close = 23.62, _ 
      .Volume = 38951990 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 14), _ 
      .Open = 23.62, _ 
      .High = 23.8, _ 
      .Low = 23.51, _ 
      .Close = 23.69, _ 
      .Volume = 46328540 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 17), _ 
      .Open = 23.32, _ 
      .High = 23.6, _ 
      .Low = 23.23, _ 
      .Close = 23.25, _ 
      .Volume = 42462890 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 18), _ 
      .Open = 23.29, _ 
      .High = 23.652, _ 
      .Low = 23.27, _ 
      .Close = 23.58, _ 
      .Volume = 38831620 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 19), _ 
      .Open = 23.25, _ 
      .High = 23.72, _ 
      .Low = 23.25, _ 
      .Close = 23.65, _ 
      .Volume = 41814320 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 20), _ 
      .Open = 23.6, _ 
      .High = 23.87, _ 
      .Low = 23.54, _ 
      .Close = 23.67, _ 
      .Volume = 39502680 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 21), _ 
      .Open = 23.93, _ 
      .High = 24.42, _ 
      .Low = 23.77, _ 
      .Close = 24.41, _ 
      .Volume = 68995700 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 24), _ 
      .Open = 24.41, _ 
      .High = 24.7326, _ 
      .Low = 24.28, _ 
      .Close = 24.64, _ 
      .Volume = 54159300 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 25), _ 
      .Open = 24.6, _ 
      .High = 24.82, _ 
      .Low = 24.46, _ 
      .Close = 24.64, _ 
      .Volume = 43961480 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 26), _ 
      .Open = 24.59, _ 
      .High = 24.75, _ 
      .Low = 24.42, _ 
      .Close = 24.55, _ 
      .Volume = 41060010 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 27), _ 
      .Open = 24.41, _ 
      .High = 24.78, _ 
      .Low = 24.3, _ 
      .Close = 24.69, _ 
      .Volume = 45433940 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 28), _ 
      .Open = 25.07, _ 
      .High = 25.49, _ 
      .Low = 24.61, _ 
      .Close = 24.68, _ 
      .Volume = 55789640 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 8, 31), _ 
      .Open = 24.57, _ 
      .High = 24.85, _ 
      .Low = 24.29, _ 
      .Close = 24.65, _ 
      .Volume = 49582950 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 9, 1), _ 
      .Open = 24.35, _ 
      .High = 24.74, _ 
      .Low = 23.9, _ 
      .Close = 24.0, _ 
      .Volume = 62571800 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 9, 2), _ 
      .Open = 23.82, _ 
      .High = 24.14, _ 
      .Low = 23.78, _ 
      .Close = 23.86, _ 
      .Volume = 40726040 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 9, 3), _ 
      .Open = 23.91, _ 
      .High = 24.14, _ 
      .Low = 23.76, _ 
      .Close = 24.11, _ 
      .Volume = 34110810 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 9, 4), _ 
      .Open = 24.09, _ 
      .High = 24.8001, _ 
      .Low = 24.08, _ 
      .Close = 24.62, _ 
      .Volume = 44987570 _ 
     }, _ 
     New TradeData() With { _ 
      .Emission = "MSFT", _ 
      .FromDate = New DateTime(2009, 9, 8), _ 
      .Open = 24.62, _ 
      .High = 24.84, _ 
      .Low = 24.41, _ 
      .Close = 24.82, _ 
      .Volume = 52243880 _ 
     } _ 
    } 
   End If 
   Return tradeData 
  End Function 
 End Class 
End Namespace 
2. Add a new RadChart declaration.

<Grid x:Name="LayoutRoot" 
        Background="White"> 
    <telerik:RadChart x:Name="radChart"> 
        <telerik:RadChart.DefaultView> 
            <telerik:ChartDefaultView> 
                <telerik:ChartDefaultView.ChartTitle> 
                    <telerik:ChartTitle Content="Trade Data" /> 
                </telerik:ChartDefaultView.ChartTitle> 
            </telerik:ChartDefaultView> 
        </telerik:RadChart.DefaultView> 
    </telerik:RadChart> 
</Grid> 
3. The key here is to use the SeriesMapping.CollectionIndex__property. __RadChart support nested collections via SeriesMapping.CollectionIndex property. This property allows the chart to be data bound to a collection/array nested inside another collection/array. The index used is the index of the internal collection inside the ItemsSource.

<Grid x:Name="LayoutRoot" 
        Background="White"> 
    <telerik:RadChart x:Name="radChart"> 
        <telerik:RadChart.DefaultView> 
            <telerik:ChartDefaultView> 
                <telerik:ChartDefaultView.ChartTitle> 
                    <telerik:ChartTitle Content="Trade Data" /> 
                </telerik:ChartDefaultView.ChartTitle> 
            </telerik:ChartDefaultView> 
        </telerik:RadChart.DefaultView> 
        <telerik:RadChart.SeriesMappings> 
            <telerik:SeriesMapping LegendLabel="CSCO" CollectionIndex="0"> 
                <telerik:SeriesMapping.SeriesDefinition> 
                    <telerik:LineSeriesDefinition ShowItemLabels="False" /> 
                </telerik:SeriesMapping.SeriesDefinition> 
                <telerik:SeriesMapping.ItemMappings> 
                    <telerik:ItemMapping DataPointMember="YValue" 
                                            FieldName="Close" /> 
                </telerik:SeriesMapping.ItemMappings> 
            </telerik:SeriesMapping> 
            <telerik:SeriesMapping LegendLabel="MSFT" CollectionIndex="1"> 
                <telerik:SeriesMapping.SeriesDefinition> 
                    <telerik:LineSeriesDefinition ShowItemLabels="False" /> 
                </telerik:SeriesMapping.SeriesDefinition> 
                <telerik:SeriesMapping.ItemMappings> 
                    <telerik:ItemMapping DataPointMember="YValue" 
                                            FieldName="Close" /> 
                </telerik:SeriesMapping.ItemMappings> 
            </telerik:SeriesMapping> 
        </telerik:RadChart.SeriesMappings> 
    </telerik:RadChart> 
</Grid> 
4. Set the ItemsSource property of the RadChart control.

List<ObservableCollection<TradeData>> sampleData = new List<ObservableCollection<TradeData>>(); 
sampleData.Add( TradeData.GetWeeklyData( "CSCO" ) ); 
sampleData.Add( TradeData.GetWeeklyData( "MSFT" ) ); 
this.radChart.ItemsSource = sampleData; 
Dim sampleData As New List(Of ObservableCollection(Of TradeData))() 
sampleData.Add(TradeData.GetWeeklyData("CSCO")) 
sampleData.Add(TradeData.GetWeeklyData("MSFT")) 
Me.radChart.ItemsSource = sampleData 
5. The final result should look like the snapshot below.

Silverlight RadChart

6. The same functionality can be achieved with code-behind as well. Below is listed the equivalent procedural code.

List<ObservableCollection<TradeData>> sampleData = new List<ObservableCollection<TradeData>>(); 
sampleData.Add( TradeData.GetWeeklyData( "CSCO" ) ); 
sampleData.Add( TradeData.GetWeeklyData( "MSFT" ) ); 
 
//Series mapping for the collection with index 0 
SeriesMapping seriesMapping = new SeriesMapping(); 
seriesMapping.CollectionIndex = 0; 
seriesMapping.LegendLabel = "CSCO"; 
seriesMapping.SeriesDefinition = new LineSeriesDefinition(); 
seriesMapping.SeriesDefinition.ShowItemLabels = false; 
ItemMapping itemMapping = new ItemMapping(); 
itemMapping.DataPointMember = DataPointMember.YValue; 
itemMapping.FieldName = "Close"; 
seriesMapping.ItemMappings.Add( itemMapping ); 
this.radChart.SeriesMappings.Add( seriesMapping ); 
 
//Series mapping for the collection with index 1 
seriesMapping = new SeriesMapping(); 
seriesMapping.CollectionIndex = 1; 
seriesMapping.LegendLabel = "MSFT"; 
seriesMapping.SeriesDefinition = new LineSeriesDefinition(); 
seriesMapping.SeriesDefinition.ShowItemLabels = false; 
itemMapping = new ItemMapping(); 
itemMapping.DataPointMember = DataPointMember.YValue; 
itemMapping.FieldName = "Close"; 
seriesMapping.ItemMappings.Add( itemMapping ); 
this.radChart.SeriesMappings.Add( seriesMapping ); 
this.radChart.ItemsSource = sampleData; 
Dim sampleData As New List(Of ObservableCollection(Of TradeData))() 
sampleData.Add(TradeData.GetWeeklyData("CSCO")) 
sampleData.Add(TradeData.GetWeeklyData("MSFT")) 
 
'Series mapping for the collection with index 0 
Dim seriesMapping As New SeriesMapping() 
seriesMapping.CollectionIndex = 0 
seriesMapping.LegendLabel = "CSCO" 
seriesMapping.SeriesDefinition = New LineSeriesDefinition() 
seriesMapping.SeriesDefinition.ShowItemLabels = False 
Dim itemMapping As New ItemMapping() 
itemMapping.DataPointMember = DataPointMember.YValue 
itemMapping.FieldName = "Close" 
seriesMapping.ItemMappings.Add(itemMapping) 
Me.radChart.SeriesMappings.Add(seriesMapping) 
 
'Series mapping for the collection with index 1 
seriesMapping = New SeriesMapping() 
seriesMapping.CollectionIndex = 1 
seriesMapping.LegendLabel = "MSFT" 
seriesMapping.SeriesDefinition = New LineSeriesDefinition() 
seriesMapping.SeriesDefinition.ShowItemLabels = False 
itemMapping = New ItemMapping() 
itemMapping.DataPointMember = DataPointMember.YValue 
itemMapping.FieldName = "Close" 
seriesMapping.ItemMappings.Add(itemMapping) 
Me.radChart.SeriesMappings.Add(seriesMapping) 
Me.radChart.ItemsSource = sampleData 

See Also

In this article