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;
};
I couldn't get the accepted answer to work. The MouseDown
handler wouldn't receive events when the plot was left-clicked. It would, however, receive events for right-clicks and double-clicks.
My workaround is to listen for PreviewMouseDown
on the PlotView
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With