C# WPF 图表工具包 : How to get independent-axis value from ColumnSeries in MouseRightButtonDown?

标签 c# wpf .net-4.0 charts

我有一个绑定(bind)了数据的 ColumnSeries,它可以正确显示。当右键单击一列时,我想弄清楚独立轴 (X) 值是多少。理想情况下,我想显示包含该信息的上下文菜单。

我有一个 MouseRightButtonDown 处理程序,但不知道如何执行 HitTest 来获取 X 轴信息。

我启用了选择,但不想在右键单击之前必须选择一列。

如有任何帮助,我们将不胜感激!

最佳答案

您可以在可视化树中向上走,寻找 ColumnDataPoint

这是一个示例图:

<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown">
    <Grid.Resources>
        <PointCollection x:Key="sampleData">
            <Point X="1" Y="6"/>
            <Point X="2" Y="4"/>
            <Point X="3" Y="8"/>
        </PointCollection>
    </Grid.Resources>
    <chartingToolkit:Chart Title="Chart Title">
        <chartingToolkit:ColumnSeries Name="chart1" Title="Column Series" ItemsSource="{StaticResource sampleData}" IndependentValueBinding="{Binding X}" DependentValueBinding="{Binding Y}"/>
    </chartingToolkit:Chart>
</Grid>

和这个代码隐藏:

private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    var element = Mouse.DirectlyOver as DependencyObject;
    while (element != null && !(element is ColumnDataPoint))
    {
        element = VisualTreeHelper.GetParent(element);
    }
    if (element != null)
    {
        var columnDataPoint = element as ColumnDataPoint;
        Debug.WriteLine("X = " + columnDataPoint.IndependentValue);
        Debug.WriteLine("Y = " + columnDataPoint.DependentValue);
    }
}

单击鼠标左键时,将打印出鼠标悬停的项目的 X 和 Y 值。

关于C# WPF 图表工具包 : How to get independent-axis value from ColumnSeries in MouseRightButtonDown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672444/

相关文章:

c# - 如何在 HttpResponseMessage 上设置内容编码

wpf - 如何使用 List(Of T) 作为 WPF DataGrid 的 Itemssource?

类似于.NET的Java GUI框架

c# - 在迭代之前等待任务完成

c# - Google 的 GData Picasa API 和 OAuth 是否使用 C# 工作?

c# - 使用任务将 100.000 个条目插入 MySQL - C#

c# - 将 JSON 对象反序列化为 C# 列表

wpf - OneWayToSource 困境

c# - .NET 4.0 是否需要 DLR?

c# - 解析数学表达式