DevExpress. DockLayoutManager. Добавление DocumentPanel. Как получить ссылку на оригинальное окно?

Я использую компонент DevExpress DockLayoutManager

Согласно документации на их сайте

http://documentation.devexpress.com/

Управляющее свойство "возвращает корневой элемент окна / страницы" - т.е. Grid.

Пример в их демонстрационном приложении: DockingDemo.Wpf DocumentGroups.xaml

И вот мой код

DocumentGroup documentContainer = dockManager.GetItem("documentContainer") as DocumentGroup;
DocumentPanel panel = dockManager.DockController.AddDocumentPanel(documentContainer,new Uri("/WpfSample;component/MyWindows/Win1.xaml", UriKind.Relative));
panel.Caption = "SomeName";
MyWindow win = ((panel.Control as Grid).Parent as MyWindow);
win.DoInit(object Obj);

И когда я звоню (панель. Контроль как Grid). Родитель - я получаю ссылку на DockLayoutManager.

Я не совсем понял. Окно идет куда? DockLayoutManager становится родительским в логическом дереве для сетки Windows?

Скажите пожалуйста - как получить Window, привести его к требуемому классу и вызвать его метод?

т.е. как заставить этот код работать

MyWindow win = ((panel.Control as Grid).Parent as MyWindow);
win.DoInit(object Obj);

1 ответ

Решение

Согласно документации, когда URI ссылается на Window, метод AddDocumentPanel загружает только указанное содержимое Window. Сам объект Window, его ресурсы и обработчики событий не загружены, и к ним нельзя получить доступ через свойство LayoutPanel.Control.

Вы можете использовать объект UserControl вместо объекта Window. В этом случае сам UserControl будет загружен, и вы сможете получить доступ к загруженному UserControl через свойство LayoutPanel.Control.

Другие вопросы по тегам