Создание нескольких рядов строк в одном графике

Я пытался научить себя, как работать с диаграммами. Я нашел действительно хороший пример в Интернете. Эта программа просто генерирует случайное число каждую секунду и отображает его на графике.

Вот код для этого проекта:

XAML:

<Window x:Class="z_UpdatenChart.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:DV="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
        Title="Window1" Height="700" Width="875"  
        xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit">
    <ScrollViewer HorizontalScrollBarVisibility="Auto"
                VerticalScrollBarVisibility="Auto" Margin="0,-28,0,28">
        <Grid Height="921" Background="DarkGray">
            <chartingToolkit:Chart Name="lineChart" Title="Power Graph" Background="YellowGreen" 
                             Foreground="DarkBlue" VerticalAlignment="Top" Margin="16,36,20,0" Height="432"  IsEnabled="True">
                <chartingToolkit:LineSeries Title="SolarCell"  
                                    ItemsSource="{Binding}" 
                                    DependentValueBinding="{Binding Path=Value}" 
                                    IndependentValueBinding="{Binding Path=Key}"
                                    IsSelectionEnabled="True">
                    <chartingToolkit:LineSeries.IndependentAxis>
                        <chartingToolkit:LinearAxis Orientation="X" Title="Time (Sec)" Interval="1"  />
                    </chartingToolkit:LineSeries.IndependentAxis>
                    <chartingToolkit:LineSeries.DependentRangeAxis>
                        <chartingToolkit:LinearAxis Orientation="Y" Title="Power (W)"/>
                    </chartingToolkit:LineSeries.DependentRangeAxis>
                </chartingToolkit:LineSeries>
            </chartingToolkit:Chart>
        </Grid>
    </ScrollViewer>
</Window>

C# -код:

using System;
using System.Collections.Generic;
using System.Windows;
using System.Collections.ObjectModel;
using System.Windows.Threading;

namespace z_UpdatenChart
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        ObservableCollection<KeyValuePair<double, double>> Power = new ObservableCollection<KeyValuePair<double, double>>();
        public MainWindow()
        {
            InitializeComponent();
            showLineChart();

            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = new TimeSpan(0, 0, 1);             // per 1 seconds
            timer.Tick += new EventHandler(timer_Tick);
            timer.IsEnabled = true;
        }

        double i = 0;
        Random random = new Random(DateTime.Now.Millisecond);
        void timer_Tick(object sender, EventArgs e)
        {
            Power.Add(new KeyValuePair<double, double>(i, random.NextDouble()));
            i += 1;
        }

        private void showLineChart()
        {
            lineChart.DataContext = Power;
        }
    }
}

Теперь я хотел бы добавить второй ряд строк в этот график (но с другим случайным значением).

Я знаю, как я могу сделать вторую серию строк в XAML, но мои знания привязки данных очень ограничены, поэтому я не знаю, как связать вторую ObservableCollection с серией строк.

Итак, мой вопрос: что будет лучшим способом для этого?

Нужно ли делать вторую привязку данных или я могу сделать массив из моей ObservableCollection?

Заранее спасибо.

0 ответов

Другие вопросы по тегам