Добавить серию программно в OxyPlot, определенный в XAML - PullRequest
2 голосов
/ 05 февраля 2020

Я тестирую OxyPlot для проекта, в котором пользователи могут добавлять данные на график.

Я пытаюсь программно добавлять серии в OxyPlot, но это не работает:

<Grid>
    <oxy:Plot x:Name="TestPlot" Title="" AllowDrop="True">

    </oxy:Plot>
</Grid>

Функция события On Drop:

        OxyPlot.Series.LineSeries ls = new OxyPlot.Series.LineSeries();
        ls.StrokeThickness = 1;

        OxyPlot.Wpf.Axis Xaxis = new OxyPlot.Wpf.LinearAxis();
        Xaxis.Maximum = 0;
        Xaxis.Minimum = 50;
        Xaxis.Position = OxyPlot.Axes.AxisPosition.Bottom;
        Xaxis.Title = "time";
        TestPlot.Axes.Add(Xaxis);

        OxyPlot.Wpf.Axis Yaxis = new OxyPlot.Wpf.LinearAxis();
        Xaxis.Maximum = 0;
        Xaxis.Minimum = 500;
        Xaxis.Position = OxyPlot.Axes.AxisPosition.Left;
        Xaxis.Title = "Value";
        TestPlot.Axes.Add(Yaxis);

        ls.Points.Add(new DataPoint(0, 1));
        ls.Points.Add(new DataPoint(10, 100));
        ls.Points.Add(new DataPoint(20, 200));
        ls.Points.Add(new DataPoint(30, 300));

        TestPlot.ActualModel.Series.Add(ls);

        TestPlot.InvalidatePlot(true);

Но LineSer ie не отображается. Мне не хватает чего-то, но я не могу понять, что, когда я погуглил эту проблему ...

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 05 февраля 2020

Используя элемент Plot, вы должны создать OxyPlot.Wpf.LineSeries и установить его ItemsSource:

OxyPlot.Wpf.LineSeries ls = new OxyPlot.Wpf.LineSeries();
ls.StrokeThickness = 1;
...
List<DataPoint> dataPoints = new List<DataPoint>();
dataPoints.Add(new DataPoint(0, 1));
dataPoints.Add(new DataPoint(10, 100));
dataPoints.Add(new DataPoint(20, 200));
dataPoints.Add(new DataPoint(30, 300));
ls.ItemsSource = dataPoints;

TestPlot.Series.Add(ls);
...