Из того, что я вижу, это довольно нетривиально. Как правило, вы захотите, чтобы WPF обрабатывал такие вещи для вас.
Тем не менее, вот что я смог придумать, основываясь на информации отсюда . Дан текстовый блок "textBlockName":
HwndSource hwndSource = PresentationSource.FromVisual(textBlockName) as HwndSource;
Visual root = hwndSource.RootVisual;
// Translate the point from the visual to the root.
GeneralTransform transformToRoot = textBlockName.TransformToVisual(root);
Point p = new Point(0,0);
p = transformToRoot.Transform(p);
p = hwndSource.CompositionTarget.TransformToDevice.Transform(p ) ;
//Display the top left point of the text box, after transforms.
MessageBox.Show(p.ToString() );
Редактировать: Глядя на это дальше, я не могу найти лучшего решения для этого. Это, кажется, справляется с любой ситуацией, которую я могу себе представить.