private static ChartHitTestResult HandleChartHit(Chart chart, UIElement element, Point point)
        {
            var xAxis = chart.XAxis;
            var yAxis = chart.YAxis;

            object dataContext;
            if (element is FrameworkElement && GetIsDataPoint(element))
            {
                dataContext = ((FrameworkElement)element).DataContext;
            }
            else
            {
                dataContext = element.GetVisualAncestors()
                                     .OfType<FrameworkElement>()
                                     .Where(GetIsDataPoint)
                                     .Select(e => e.DataContext)
                                     .FirstOrDefault();
            }

            return new ChartHitTestResult
            {
                ChartPanel = GetChartPanel(chart),
                Chart = chart,
                Visual = element,
                Data = dataContext,
                Position = point,
                X = (xAxis != null) ? xAxis.GetValue(point) : Double.NaN,
                Y = (yAxis != null) ? yAxis.GetValue(point) : Double.NaN,
            };
        }