OxyPlot WPF — получить выбранный столбец

Я пытаюсь получить выбранный (щелкнутый) столбец в 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>

person skituljko    schedule 27.01.2016    source источник


Ответы (1)


Нет выбранного свойства столбца. Вам нужно реализовать событие 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;
         }
    }
}
person David    schedule 27.01.2016
comment
У меня проблема с параметрами события - ColumnSeries_MouseDown (отправитель объекта, MouseButtonEventArgs e). MoseButtonEventArgs != OxyMouseDownEventArgs - person skituljko; 27.01.2016
comment
Версии OxyPlot: ‹package id=OxyPlot.Core version=1.0.0-unstable1974 targetFramework=net45 /› ‹package id=OxyPlot.Wpf version=1.0.0-unstable1974 targetFramework=net45 /› - person skituljko; 27.01.2016
comment
В этом случае вы можете попробовать использовать ConverterExtensions.ToMouseDownEventArgs (this MouseButtonEventArgs e, IInputElement relativeTo). Это преобразует MouseButtonEventArgs в OxyMouseDownEventArgs. - person David; 27.01.2016
comment
Мне удалось получить аргументы мыши, но для объекта OxyPlot.Wpf.ColumnSeries нет метода GetNearestPoint :( - person skituljko; 25.02.2016