Silverlight工具包和多系列图表绑定

时间:2013-01-07 15:41:17

标签: silverlight graph charts toolkit

我正在努力弄清楚为什么我对多系列列图的绑定不起作用。从我通过网络上看到的例子看,我无法看到我正在做的事情的逻辑问题,但也许我错过了一些东西。据我所知,它得到了支持。

这是我的图表控件:

<toolkit:Chart x:Name="myChart" Margin="10">
            <toolkit:ColumnSeries 
            Title="Orion"
            IndependentValueBinding="{Binding Date}"
            DependentValueBinding="{Binding Orion}"
            AnimationSequence="FirstToLast">
            </toolkit:ColumnSeries>

            <toolkit:ColumnSeries                 
            Title="Access Card"
            IndependentValueBinding="{Binding Date}"
            DependentValueBinding="{Binding AccessCard}"
            AnimationSequence="FirstToLast">
            </toolkit:ColumnSeries>

            <toolkit:ColumnSeries                 
            Title="Time Keeper"
            IndependentValueBinding="{Binding Date}"
            DependentValueBinding="{Binding TimeKeeper}"
            AnimationSequence="FirstToLast">
            </toolkit:ColumnSeries>

        </toolkit:Chart>

这是我试图实现的一些测试代码:

private void OrionWebService_ChartComilerCompleted(object sender, ChartCompilerCompletedEventArgs e)
  {
     List<ChartClass> mytest = new List<ChartClass>();
     mytest.Add(new ChartClass
                   {
                      Date = Convert.ToDateTime("01/01/2013 12:00:00 PM"),
                      Orion = 3.0,
                      AccessCard = 4.0,
                      TimeKeeper = 6.0
                   });

     mytest.Add(new ChartClass
                   {
                      Date = Convert.ToDateTime("01/02/2013 12:00:00 PM"),
                      Orion = 6.0,
                      AccessCard = 4.0,
                      TimeKeeper = 8.0
                   });

     ((ColumnSeries)myChart.Series[0]).ItemsSource = mytest;
     BusyIndicator.IsBusy = false;
  }

ChartClass

    public class ChartClass
   {
      public DateTime Date { get; set; }
      public double Orion { get; set; }
      public double AccessCard { get; set; }
      public double TimeKeeper { get; set; }
   }

现在我只是传递一些测试数据,最终虽然我正在尝试为日期范围内的每一天创建一个有3个垂直列的图表。与下图类似:

What I want my chart to look like

出于某种原因,虽然当控件加载时,除了一个Labeled Orion之外,它没有填充任何列的任何数据。如果我从xaml中删除Orion系列并仅定义TimeKeeper和AccessCard,那么TimeKeeper系列可以工作,但不会显示AccessCard数据。它似乎只绑定到第一个定义的系列,并忽略对图表中所有其他系列的绑定。 silverlight工具包不支持我正在尝试做的事情吗?

有人可以帮助我吗?或者至少指出一个例子的方向。我似乎无法发现我所做的事情。

提前致谢。

1 个答案:

答案 0 :(得分:0)

道歉,我发现问题是由Code引起的,因为我只定义了series [0]的项目源而不是其他的。使用以下代码解决了问题:

((ColumnSeries)myChart.Series[0]).ItemsSource = mytest;
((ColumnSeries)myChart.Series[1]).ItemsSource = mytest;
((ColumnSeries)myChart.Series[2]).ItemsSource = mytest;

不漂亮,但我的图表现在正常运作