我已经使用示例实现了ILayoutupdateStrategy,但到目前为止,每个新的LayoutDocument始终放在同一个LayoutDocumentPane中。我想自动添加新的LayoutDocument和现有的Document。
我尝试创建一个新的LayoutDocumentPaneGroup并将现有的LayoutDocumentPane和新内容移动到该新组中,但是当我尝试将该组添加到布局结构中时,方法永远不会返回并且应用程序挂起。
LayoutDocumentPaneGroup newGroup = { a LayoutDocumentPaneGroup containing both the original sibling LayoutDocumentPane and the new content LayoutDocumentPane }
LayoutDocumentPaneGroup parent = { the parent group of the sibling document }
我尝试过这样的事情:
parent.RemoveChild(sibling);
parent.Children.Add( newGroup );
和
parent.Children.ReplaceChild( sibling, newGroup );
但他们似乎都挂在那些方法上。
我希望我能以完全错误的方式接近这一点,所以任何指针都会非常受欢迎。
答案 0 :(得分:0)
所以......事实证明问题在于你必须将子项添加到正在添加的新文档组中,直到将放入布局树后。
示例代码
private void DockDocumentToBottom( LayoutDocumentPane sibling, LayoutDocument tobeDocked )
{
LayoutDocumentPaneGroup newGroup = new LayoutDocumentPaneGroup();
newGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
LayoutDocumentPane newDocPane = new LayoutDocumentPane(tobeDocked);
LayoutDocumentPaneGroup siblingParent = sibling.Parent as LayoutDocumentPaneGroup;
if (siblingParent != null )
{
siblingParent.ReplaceChild(sibling, newGroup);
newGroup.Children.Add(sibling);
newGroup.Children.Add(newDocPane);
}
else
{
Debug.WriteLine("LayoutInitialiser: Failed to attach to a document pane group!");
}
}
我希望这有助于其他人!