private static void WhenHoverOverParentChanges(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var child = d as FrameworkElement;
if (child == null) return;
var parent = VisualTreeHelper.GetParent(child) as FrameworkElement;
if (parent == null) return;
child.Visibility = Visibility.Hidden;
parent.MouseEnter += delegate { child.Visibility = Visibility.Visible; };
parent.MouseLeave += delegate { child.Visibility = Visibility.Hidden; };
}