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;
我有一个 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;