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.