OxyPlot WPF 获取选定的数据点

OxyPlot WPF get selected data point

我有一个 Oxyplot 图表显示了一个线性系列,如下所示

                    <oxy:Plot x:Name="MyChart"
                              Title="Real"
                              Grid.Row="1"
                              Grid.Column="0">
                        <oxy:Plot.Series>
                            <oxy:LineSeries Title="MySeries"/>
                        </oxy:Plot.Series>
                        <oxy:Plot.Axes>
                            <oxy:LinearAxis Position="Left" TicklineColor="White" Title= "MySeries"/>
                            <oxy:LinearAxis Position="Bottom" TicklineColor="White" />    
                        </oxy:Plot.Axes>
                    </oxy:Plot>

当用户左键单击线条时,将显示跟踪器,显示所选数据点。我想在我的代码中有一个处理程序来获取选定的数据点,但我不确定执行此操作的正确方法。

我试过如下添加处理程序

    this.MyChart.ActualModel.MouseDown += OxyMouseDown;

    private void OxyMouseDown(object sender, OxyMouseDownEventArgs e)
    {
        LineSeries lineSeries = sender as LineSeries;
        if (lineSeries != null)
        {
            double x = lineSeries.InverseTransform(e.Position).X;
        }
    }

但是,尽管调用了处理程序,但发送方永远不是 LineSeries 类型,因此我永远无法转换点。

有人可以帮忙吗?

谢谢。

Plot 元素替换为 PlotView 元素并创建一个 PlotModel 并向其添加系列和轴:

PlotModel plotModel = new PlotModel() { Title = "Real" };
LineSeries lineSeries = new LineSeries() { Title = "MySeries" };
plotModel.Series.Add(lineSeries);
//...and add the axes
MyChart.Model = plotModel;

XAML:

<oxy:PlotModel x:Name="MyChart" Grid.Row="1" />

那么你应该可以处理LineSeries的事件:

lineSeries.MouseDown += OxyMouseDown;