Один из наших клиентов размещает нашу систему управления сеткой WinForms .NET iGrid.NET (http://www.10tec.com/) внутри контейнера WPF ElementHost вместе с другими элементами управления WPF. Это может показаться странным, поскольку это элемент управления WinForms внутри узла WPF внутри формы WinForms, но у них нет выбора из-за другого материала WPF, который они используют (это AvalonDock http://avalondock.codeplex.com/ стыковочный контейнер).
Проблема в том, что инфраструктура нашего элемента управления .NET datagrid требует знания родительской формы WinForms, но следующая конструкция, которую мы используем для этого, всегда возвращает null в этой ситуации:
Form myTopLevelOwnerForm = fCurrentGrid.TopLevelControl as Form;
Т.е. стандартное свойство Control.TopLevelControl, предназначенное для этой цели, возвращает null - хотя, скорее всего, так и должно быть в случае хоста WPF.
Возникает вопрос: есть ли другие способы узнать родительскую форму из текущего кода элемента управления? Скажем, с помощью дескрипторов WinAPI или лучше других нативных .NET-мемов?