在一张图表中制作多个lineseries

时间:2017-12-14 14:44:58

标签: c# xaml charts wpftoolkit datavisualization.toolkit

我一直在努力教自己如何使用图表。我在网上发现了一个很好的例子。该程序每秒只生成一个随机数,并将其显示在图表上。

以下是此项目的代码:

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#-code:

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

现在我想在此图表中添加第二个lineserie(但具有不同的随机值)。

我知道如何在XAML中制作第二个lineseries但我对数据绑定的了解非常有限,所以我不知道如何将第二个ObservableCollection与lineserie联系起来。

所以我的问题是:最好的方法是什么?

我是否需要进行第二次数据绑定,还是可以从ObservableCollection中创建数组?

提前致谢。

0 个答案:

没有答案