I am trying to plot some circles on a scatter plot via:
<Grid>
<oxy:PlotView x:Name="PlotView" Title="{Binding Title}" >
<oxy:PlotView.Axes>
<oxy:LinearAxis Position="Bottom" Minimum="-30" Maximum="30" IsAxisVisible="False" IsZoomEnabled="False" IsPanEnabled="False" />
<oxy:LinearAxis Position="Left" Minimum="0" Maximum="35" IsAxisVisible="False" IsZoomEnabled="False" IsPanEnabled="False"/>
</oxy:PlotView.Axes>
<oxy:PlotView.Series>
<oxy:ScatterSeries Height="100" Width="100" ItemsSource="{Binding Points}" MarkerType="Circle" />
</oxy:PlotView.Series>
</oxy:PlotView>
</Grid>
I cannot figure out how to enable some sort of click handler to have an event fired when a user clicks on a DataPoint
.
Examaple:
User clicks DataPoint
at (X, Y) = (0, 5), I would like to fire an event so I can handle the click of that point.
Is this possible with OxyPlot? I am currently investigating the Tracker
to see if its possible that route, but starting to run out of ideas.
PlotView
has defined mouse events, from which you can get the mouse coordinates, and InverseTransform
is used to translate mouse coordinates to plot coordinates.
Example:
var model = new PlotModel { Title = "Test Mouse Events" };
var s1 = new LineSeries();
model.Series.Add(s1);
double x;
s1.MouseDown += (s, e) =>
{
x = (s as LineSeries).InverseTransform(e.Position).X;
};