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

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

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

http://documentation.devexpress.com/#WPF/DevExpressXpfDockingLayoutPanel_Uritopic

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

Пример в их демонстрационном приложении: 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);

И когда я звоню (panel.Control as Grid). Родитель — я получаю ссылку на DockLayoutManager.

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

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

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

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

person SoapNewbie    schedule 21.01.2014    source источник


Ответы (1)


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

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

person Paul O    schedule 22.01.2014