2011-05-12 33 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

相關問題