Дополнительно к ответам, которые уже были записаны, не наличие контролируемых исключительных ситуаций помогает Вам во многих ситуациях много. Контролируемые исключительные ситуации делают дженерики тяжелее для реализации и если Вы прочитали предложения по закрытию, Вы заметите, что каждое предложение по закрытию должно работать вокруг контролируемых исключительных ситуаций довольно ужасным способом.
The methods in the link you posted should work fine, provided you call them correctly.
You need to call them with the correct UIElement - in this case, using element1 to the RootVisual will give you the full position of element1
:
var transform = element1.TransformToVisual(Application.Current.RootVisual as FrameworkElement);
Point absolutePosition = transform.Transform(new Point(0, 0));