OxyPlot WPF - 获取选定列

3

我正在尝试获取在OxyPlot WPF中所选(单击)的列。 有没有办法做到这一点? 我的WPF代码如下:

    <oxy:Plot x:Name="plotDiagram" Title="Output" >
        <oxy:Plot.Axes>
            <oxy:CategoryAxis ItemsSource="{Binding Item.barDisplayData1}" LabelField="DisplayText"/>
            <oxy:LinearAxis MinimumPadding="0" AbsoluteMinimum="0"/>
        </oxy:Plot.Axes>
        <oxy:Plot.Series>
            <oxy:ColumnSeries Title="{Binding Item.Title1}" FillColor="Green" IsStacked="True" ItemsSource="{Binding Item.barDisplayData1}" ValueField="Value" />
            <oxy:ColumnSeries Title="{Binding Item.Title2}" FillColor="Red" IsStacked="True" ItemsSource="{Binding Item.barDisplayData2}" ValueField="Value"/>
            <oxy:ColumnSeries Title="{Binding Item.Title3}" FillColor="Yellow" IsStacked="True" ItemsSource="{Binding Item.barDisplayData3}" ValueField="Value"/>
        </oxy:Plot.Series>
    </oxy:Plot>
1个回答

2

没有选定列属性。您需要在列系列上实现mousedown事件,并使用GetNearestPoint()函数确定单击了哪个列。

void columns_MouseDown(object sender, MouseButtonEventArgs e)  
{         
    var cols = sender as ColumnSeries;    
     OxyMouseDownEventArgs args = ConverterExtensions.ToMouseDownEventArgs(e, sender);
    if (cols != null)      
    {         
         TrackerHitResult nearestPoint = cols.GetNearestPoint(args.Position, false);           
         if(nearestPoint != null) {
            object selectedColumn = nearestPoint.Item;
         }
    }
}

我遇到了一个事件参数的问题 - ColumnSeries_MouseDown(object sender, MouseButtonEventArgs e)。MouseButtonEventArgs != OxyMouseDownEventArgs。 - skituljko
OxyPlot 版本: <package id="OxyPlot.Core" version="1.0.0-unstable1974" targetFramework="net45" /> <package id="OxyPlot.Wpf" version="1.0.0-unstable1974" targetFramework="net45" /> - skituljko
1
在这种情况下,您可以尝试使用ConverterExtensions.ToMouseDownEventArgs(this MouseButtonEventArgs e,IInputElement relativeTo)。这将MouseButtonEventArgs转换为OxyMouseDownEventArgs。 - David
我成功获取了鼠标参数,但是 OxyPlot.Wpf.ColumnSeries 对象上没有 GetNearestPoint 方法 :( - skituljko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接