Сначала я создал статический метод в классе App, который идет вверх по иерархии родителей, пока не найдет совпадение по имени. Это может быть использовано не только для MainPage. Все в иерархии должно быть производным от класса FrameworkElement.
public static FrameworkElement GetParentByName(FrameworkElement currentPage,
string ParentName)
{
FrameworkElement fe = (FrameworkElement)currentPage.Parent;
// Walk your way up the chain of Parents until we get a match
while(fe.GetType().Name != ParentName)
fe = (FrameworkElement)fe.Parent;
return fe;
}
Затем, чтобы использовать это, я просто называю что-то вроде:
MainPage m = (MainPage) App.GetParentByName (this, "MainPage");