1

新しいランダム値シリーズを Silverlight StackedAreaChart に動的に追加できる sth をコーディングしたいと考えています。つまり、実行時にユーザーがボタンをクリックするたびに、プログラムのメイン StackedAreaChart に別の色で新しい値シリーズを追加する必要があります。

Silverlight Visualization demos (Stacked Area example)を除いて、インターネット上でこれの良い例を見つけることができません。

プログラマーは3つの定義済みシリーズで静的にしましたが、動的にしたいので理解できません:-/

私はこれに2週間を費やしました。私はこのことに慣れていないので、どんな助けも大歓迎です:(

ありがとうございます!:)

4

1 に答える 1

0

最後に、動的ランダム シリーズの例を作成する時間を見つけました。

XAML コードは単純です: 1 つのボタンとグラフ。

<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);
    }
}

コード ビハインドよりもビュー モデルと観察可能なコレクションを使用する方が好きな場合は、シリーズのリストにデータをバインドできる拡張チャート クラスを使用します。しかし、それにはもっと多くのコードが必要なので、このコード ビハインドの例を見てみましょう。

于 2011-06-07T17:49:38.253 に答える