我使用组件DevExpress DockLayoutManager
根据其网站上的文件
http://documentation.devexpress.com/#WPF/DevExpressXpfDockingLayoutPanel_Uritopic
Control属性“返回Window / Page的根元素” - 即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);
当我调用(panel.Control为Grid)时。父 - 我得到了一个指向DockLayoutManager的链接。
我不太明白。窗户去哪儿了? DockLayoutManager在Windows网格的逻辑树中变为Parent?
请告诉我 - 如何获取Window,将其转换为所需的类并调用其方法?
即如何使此代码工作
MyWindow win = ((panel.Control as Grid).Parent as MyWindow);
win.DoInit(object Obj);
答案 0 :(得分:0)
根据documentation,当URI引用Window时,AddDocumentPanel方法仅加载指定的Window内容。 Window对象本身,其资源和事件处理程序未加载,无法通过LayoutPanel.Control属性访问它们。
您可以使用UserControl对象而不是Window对象。在这种情况下,将加载UserControl本身,您将能够通过LayoutPanel.Control属性访问加载的UserControl。