Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF工具箱图表中动态添加任意数量的线系列?_C#_Wpf_Xaml_Mvvm_Charts - Fatal编程技术网

C# 如何在WPF工具箱图表中动态添加任意数量的线系列?

C# 如何在WPF工具箱图表中动态添加任意数量的线系列?,c#,wpf,xaml,mvvm,charts,C#,Wpf,Xaml,Mvvm,Charts,是否可以在一个工具箱图表中绘制多行,其中行号在运行时确定?与集合相比,我更喜欢使用MVVM方式绑定行。例如,下面只显示一个“LineSeries”,但如果要显示多行,该怎么办。谢谢大家! <ch:Chart.Series> <ch:LineSeries Title="{Binding Title}" ItemsSource="{Binding DataPoints}"

是否可以在一个工具箱图表中绘制多行,其中行号在运行时确定?与集合相比,我更喜欢使用MVVM方式绑定行。例如,下面只显示一个“LineSeries”,但如果要显示多行,该怎么办。谢谢大家!

            <ch:Chart.Series>
            <ch:LineSeries Title="{Binding Title}"
                           ItemsSource="{Binding  DataPoints}"
            IndependentValueBinding="{Binding Path=X}"
            DependentValueBinding="{Binding Path=Y}">
            </ch:LineSeries>
        </ch:Chart.Series>

编辑3-添加测试按钮:

XAML:

视图模型:

public class MyViewModel2
{
    public List<PointCollection> MyList { get; set; }

    public MyViewModel2()
    {
        MyList = new List<PointCollection>();
    }
}
public class MyViewModel
{
    public PointCollection MyPointCollection1 { get; set; }
    public PointCollection MyPointCollection2 { get; set; }

    public MyViewModel()
    {
        MyPointCollection1 = new PointCollection();
        MyPointCollection2 = new PointCollection();
    }
}
窗口:

    int index;
    MyViewModel2 viewModel;

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        viewModel = new MyViewModel2();
        DataContext = viewModel;
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        PointCollection pc = new PointCollection();

        for (int i = 1; i <= 10; i++)
            pc.Add(new Point { X = i, Y = i * (2 + index) });

        LineSeries series1 = new LineSeries();
        series1.DependentValuePath = "Y";
        series1.IndependentValuePath = "X";
        series1.ItemsSource = pc;
        chart1.Series.Add(series1);

        viewModel.MyList.Add(pc);

        index++;
    }
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        viewModel = new MyViewModel2();
        DataContext = viewModel;

        PointCollection pc1 = new PointCollection();
        PointCollection pc2 = new PointCollection();

        for (int i = 1; i <= 10; i++)
        {
            pc1.Add(new Point { X = i, Y = i * 2 });
            pc2.Add(new Point { X = i, Y = i * 3 });
        }

        LineSeries series1 = new LineSeries();
        series1.DependentValuePath = "Y";
        series1.IndependentValuePath = "X";
        series1.ItemsSource = pc1;
        chart1.Series.Add(series1);

        viewModel.MyList.Add(pc1);

        LineSeries series2 = new LineSeries();
        series2.DependentValuePath = "Y";
        series2.IndependentValuePath = "X";
        series2.ItemsSource = pc2;
        chart1.Series.Add(series2);

        viewModel.MyList.Add(pc2);
    }
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        viewModel = new MyViewModel();
        DataContext = viewModel;

        for (int i = 1; i <= 10; i++)
        {
            viewModel.MyPointCollection1.Add(new Point { X = i, Y = i * 2 });
            viewModel.MyPointCollection2.Add(new Point { X = i, Y = i * 3 });
        }
    }
private void Window\u已加载(对象发送方,路由目标)
{
viewModel=新的MyViewModel();
DataContext=viewModel;

对于(int i=1;感谢您的回复,但我的问题是我不知道将有多少个lineSeries,因此我无法定义MyPointCollection#和lineSeries的固定数量。请参见编辑2。请参见编辑3-添加了一个测试按钮。@user2391685您对此有任何后续问题吗?
<Grid>
    <chartingToolkit:Chart Margin="0" Title="Chart Title">
        <chartingToolkit:LineSeries DependentValuePath="Y" IndependentValuePath="X" ItemsSource="{Binding MyPointCollection1}"/>
        <chartingToolkit:LineSeries DependentValuePath="Y" IndependentValuePath="X" ItemsSource="{Binding MyPointCollection2}"/>
    </chartingToolkit:Chart>
</Grid>
public class MyViewModel
{
    public PointCollection MyPointCollection1 { get; set; }
    public PointCollection MyPointCollection2 { get; set; }

    public MyViewModel()
    {
        MyPointCollection1 = new PointCollection();
        MyPointCollection2 = new PointCollection();
    }
}
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        viewModel = new MyViewModel();
        DataContext = viewModel;

        for (int i = 1; i <= 10; i++)
        {
            viewModel.MyPointCollection1.Add(new Point { X = i, Y = i * 2 });
            viewModel.MyPointCollection2.Add(new Point { X = i, Y = i * 3 });
        }
    }