我有一个绑定(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/