private double DetermineY()
{
switch (_child.VerticalAlignment)
{
case VerticalAlignment.Top:
{
if (_verticalAdornerPlacement == AdornerPlacement.Outside)
{
return -_child.DesiredSize.Height + _offsetY;
}
return _offsetY;
}
case VerticalAlignment.Bottom:
{
if (_verticalAdornerPlacement == AdornerPlacement.Outside)
{
double adornedHeight = AdornedElement.ActualHeight;
return adornedHeight + _offsetY;
}
else
{
double adornerHeight = _child.DesiredSize.Height;
double adornedHeight = AdornedElement.ActualHeight;
double x = adornedHeight - adornerHeight;
return x + _offsetY;
}
}
case VerticalAlignment.Center:
{
double adornerHeight = _child.DesiredSize.Height;
double adornedHeight = AdornedElement.ActualHeight;
double x = (adornedHeight / 2) - (adornerHeight / 2);
return x + _offsetY;
}
case VerticalAlignment.Stretch:
{
return 0.0;
}
}
return 0.0;
}