2011-05-12 55 views
1

我想编码,我可以动态地向Silverlight StackedAreaChart添加一个新的随机值系列。也就是说,每次用户在运行时点击一个按钮,我都想要一个不同颜色的新值系列添加到程序main StackedAreaChart中。如何在Silverlight中动态地将DefinitionSeries添加到StackedAreaChart?

除了Silverlight Visualization demos (Stacked Area example),我在互联网上找不到任何这方面的好例子。

程序员使其静态的,其中三个预定义的系列,但我希望它是动态的,不能图出来: -/

我花了2周现在这个样子,任何帮助将不胜感激,因为我新来这个东西:(

THX PPL!:)

+0

你想添加一个项目的图例?好的,我知道如何做到这一点。 – vorrtex 2011-05-13 15:34:08

+0

那么你能告诉我吗? – user751344 2011-06-03 04:40:23

回答

0

最后我发现时间来创建动态随机序列的一个例子。

XAML代码很简单:一个按钮和图表。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="40" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Button Content="Add random series" Click="AddSeries_Click" HorizontalAlignment="Center" /> 
    <chart:Chart x:Name="chart" Grid.Row="1"> 
     <chart:StackedAreaSeries /> 
    </chart:Chart> 
</Grid> 

代码隐藏看起来相当复杂,但大部分代码用于生成随机数据。主要代码在AddSeries_Click方法中。

public partial class MainPage : UserControl 
{ 
    private string[] categories = new[] { "Apples", "Oranges", "Bananas", "Lemons" }; 
    private Random random = new Random((int)DateTime.Now.Ticks); 
    private int lastSeriesYear = 2011; 

    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    public class ChartItem 
    { 
     public string Title { get; set; } 
     public double Value { get; set; } 
    } 

    private void AddSeries_Click(object sender, RoutedEventArgs e) 
    { 
     var sd = new SeriesDefinition(); 
     sd.ItemsSource = categories.Select(c => new ChartItem { Title = c, Value = random.Next(30, 35) }).ToList(); 
     sd.Title = (lastSeriesYear--).ToString(); 
     sd.IndependentValuePath = "Title"; 
     sd.DependentValuePath = "Value"; 

     ((StackedAreaSeries)this.chart.Series[0]).SeriesDefinitions.Add(sd); 
    } 
} 

如果你比较喜欢的视图模型和观察集合工作比代码隐藏,我有extended chart class这使得数据绑定系列的列表。但是它需要更多的代码,所以让我们来看一下这个代码隐藏的例子。

+0

谢谢,这是一个很好的开始,我面临的问题是它必须是一个*堆积*面积图。我无法弄清楚如何定义数据结构来动态地保存这些值。任何帮助你将不胜感激。多谢! – user751344 2011-06-08 18:25:45

+0

@ user751344没有太多的改变。我编辑了我的答案,现在我使用StackedAreaSeries而不是AreaSeries。 – vorrtex 2011-06-08 22:13:45

相关问题