2015-01-17 102 views
3

我試圖通過繪製在散點圖上某些圈子:OxyPlot獲得點擊點

<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> 

我無法弄清楚如何使某種點擊處理程序有一個觸發的事件,當用戶點擊一個DataPoint。

〔實施例:

用戶點擊的數據點在X:0,Y:5,我想觸發一個事件,所以我可以處理該點的點擊。

這可能與OxyPlot?我目前正在調查追蹤器,看看它是否可能有這樣的路線,但開始用盡想法。

+0

你試過'plotView.MouseDown'事件? – kennyzx

+0

我有。我能夠獲得鼠標的x和y位置,但它與實際情節無關。 – Matt

+2

我還沒有嘗試過,但是'InverseTransform'用於將鼠標座標轉換爲繪圖座標。 – kennyzx

回答

6

PlotView定義了鼠標事件,您可以從中獲取鼠標座標。 InverseTransform用於將鼠標座標轉換爲繪圖座標。

例子:

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; 
    }; 
+0

我知道這是一個古老的問題,但您能提供一個解決方案的例子嗎?我正在努力讓它工作。 –