You can use this little helper function I just wrote that will check if an element is visible for the user, in a given container. The function returns true
if the element is partly visible. If you want to check if it’s fully visible, replace the last line by rect.Contains(bounds)
.
private bool IsUserVisible(FrameworkElement element, FrameworkElement container)
{
if (!element.IsVisible)
return false;
Rect bounds = element.TransformToAncestor(container).TransformBounds(new Rect(0.0, 0.0, element.ActualWidth, element.ActualHeight));
Rect rect = new Rect(0.0, 0.0, container.ActualWidth, container.ActualHeight);
return rect.Contains(bounds.TopLeft) || rect.Contains(bounds.BottomRight);
}
In your case, element
will be your user control, and container
your Window.