如何以编程方式向avalon Dock添加更多窗格

Max*_*ung 0 c# avalondock

我正在使用avalon dock v2,我想要做的就是拥有它所以当我点击一个按钮时它会在我的布局中添加另一个窗格.

这是我现有的窗格,但是当我按下按钮时,我不知道为其添加另一个窗格的语法.

avalonDock:DockingManager x:Name="dockingManager">
                <avalonDock:LayoutRoot>
                    <avalonDock:LayoutPanel Orientation="Horizontal">
                        <avalonDock:LayoutDocumentPaneGroup >
                            <avalonDock:LayoutDocumentPane x:Name="mainDocumentPaneGroup">

                            </avalonDock:LayoutDocumentPane>
                        </avalonDock:LayoutDocumentPaneGroup>
                      </avalonDock:LayoutPanel>
                </avalonDock:LayoutRoot>
  </avalonDock:DockingManager>
Run Code Online (Sandbox Code Playgroud)

这是我放在按钮内部的内容.

 DockPanel CNPCTab = new DockPanel() { };
        CNPCTab.Name = "CNPCTab";

        mainDocumentPaneGroup.
Run Code Online (Sandbox Code Playgroud)

我真的没有看到任何允许我将我初始化的窗格添加到xaml中初始化的组I的方法.

Joh*_*nks 9

我不知道你是否还需要这个答案,但我也需要它,并且无法在任何地方找到一个好的答案,所以我在这里证明了这一点.您需要创建一个LayoutArchorable,将其内容设置为UserControl,然后在LayoutArchorable上调用AddToLayout方法以使其自行添加.在我的情况下,我希望新窗口以浮动方式启动,以便用户可以决定放置它的位置,但是您仍然必须在它可以浮动之前将其分配到某个位置.

    LayoutAnchorable la = new LayoutAnchorable { Title = "New Window", FloatingHeight = 400, FloatingWidth = 500, Content = new YourUserControl() };
    la.AddToLayout(dockingManager, AnchorableShowStrategy.Right);
    la.Float();
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我在XAML中命名了DockingManager,因此我可以从后面的代码中访问它.