Когда я пытался создать собственный движок в WinForms, я был заблокирован тем, что интерфейс IArrangedElement является внутренним. Это выглядит глупо, но кажется, что вы не можете получить свойства макета единообразным способом, если не разработаете сам System.Windows.Forms.