Как проверить, не выходит ли элемент из родительского контейнера?
У меня есть подобная WrapPanel: 
У нее вертикальная ориентация, т.е элементы идут сверху вниз. Количество элементов заранее неизвестно (все рисуется на основе данных из бд). Так же неизвестен размер этих элементов. Для контекста: это хосты на датацентре, на которых работают vm'ки, программа это все визуализирует. Хостов, как и vm, может быть разное количество.
Проблема такая: мне нужно отрисовывать wrappanel (spb-2) вниз до тех пор, пока все хосты не будут показаны. Т.е 1, 2, 3, 4, 5, 6 - отображаются правильно, а вот 7 - находится за границами родительского контейнера.
Сначала я пытался через подобный метод увеличивать размер панели, пока элементы не будут полностью видны:
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);
}
Но это не работает, всегда возвращает true, и вообще не очень адекватно себя ведет метод (не получает координаты). Сейчас я думаю, что правильнее будет сравнить координаты родительского и вложенного элемента. Как это лучше сделать?