static void fe_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { FrameworkElement fe = sender as FrameworkElement; if (fe != null) { Window w = MoreVisualTreeHelper.Find(fe, typeof(Window)) as Window; if (w != null) { FrameworkElement position = GetPosition(fe); Point point = position.TransformToAncestor(w).Transform(new Point(0, 0)); Canvas.SetLeft(fe, point.X - 10); Canvas.SetTop(fe, point.Y - 10); } } }