public override void DataMouseEnter(object sender, MouseEventArgs e) { if (DataToolTip == null) { return; } DataToolTip.Visibility = Visibility.Visible; TooltipTimer.Stop(); var senderShape = HoverableShapes.FirstOrDefault(s => Equals(s.Shape, sender)); if (senderShape == null) { return; } senderShape.Target.Stroke = senderShape.Series.Stroke; senderShape.Target.Fill = new SolidColorBrush { Color = PointHoverColor }; var scatterToolTip = DataToolTip as ScatterTooltip; if (scatterToolTip != null) { scatterToolTip.PrimaryAxisTitle = PrimaryAxis.Title; scatterToolTip.PrimaryValue = PrimaryAxis.LabelFormatter == null ? senderShape.Value.Y.ToString(CultureInfo.InvariantCulture) : PrimaryAxis.LabelFormatter(senderShape.Value.Y); scatterToolTip.SecondaryAxisTitle = SecondaryAxis.Title; scatterToolTip.SecondaryValue = SecondaryAxis.LabelFormatter == null ? senderShape.Value.X.ToString(CultureInfo.InvariantCulture) : SecondaryAxis.LabelFormatter(senderShape.Value.X); } var p = GetToolTipPosition(senderShape, null); DataToolTip.BeginAnimation(Canvas.LeftProperty, new DoubleAnimation { To = p.X, Duration = TimeSpan.FromMilliseconds(200) }); DataToolTip.BeginAnimation(Canvas.TopProperty, new DoubleAnimation { To = p.Y, Duration = TimeSpan.FromMilliseconds(200) }); }
public virtual void DataMouseEnter(object sender, MouseEventArgs e) { if (DataToolTip == null) { return; } DataToolTip.Visibility = Visibility.Visible; TooltipTimer.Stop(); var senderShape = HoverableShapes.FirstOrDefault(s => Equals(s.Shape, sender)); if (senderShape == null) { return; } var sibilings = HoverableShapes .Where(s => Math.Abs(s.Value.X - senderShape.Value.X) < S.X * .001).ToList(); var first = sibilings.Count > 0 ? sibilings[0] : null; var labels = SecondaryAxis.Labels != null?SecondaryAxis.Labels.ToArray() : null; var vx = first != null ? first.Value.X : 0; vx = AlphaLabel ? (int)(vx / (360d / Series.First().PrimaryValues.Count)) : vx; foreach (var sibiling in sibilings) { if (ShapeHoverBehavior == ShapeHoverBehavior.Dot) { sibiling.Target.Stroke = sibiling.Series.Stroke; sibiling.Target.Fill = new SolidColorBrush { Color = PointHoverColor }; } else { sibiling.Target.Opacity = .8; } } var indexedToolTip = DataToolTip as IndexedTooltip; if (indexedToolTip != null) { indexedToolTip.Header = labels == null ? (SecondaryAxis.LabelFormatter == null ? vx.ToString(CultureInfo.InvariantCulture) : SecondaryAxis.LabelFormatter(vx)) : (labels.Length > vx ? labels[(int)vx] : ""); indexedToolTip.Data = sibilings.Select(x => new IndexedTooltipData { Index = Series.IndexOf(x.Series), Series = x.Series, Point = x.Value, Value = PrimaryAxis.LabelFormatter == null ? x.Value.Y.ToString(CultureInfo.InvariantCulture) : PrimaryAxis.LabelFormatter(x.Value.Y) }).ToArray(); } var p = GetToolTipPosition(senderShape, sibilings); DataToolTip.BeginAnimation(Canvas.LeftProperty, new DoubleAnimation { To = p.X, Duration = TimeSpan.FromMilliseconds(200) }); DataToolTip.BeginAnimation(Canvas.TopProperty, new DoubleAnimation { To = p.Y, Duration = TimeSpan.FromMilliseconds(200) }); }