以编程方式将LayoutAnchorable添加到DockManager

时间:2014-05-15 14:24:08

标签: c# wpf avalondock

我尝试以编程方式向我的AvalonDock LayoutAnchorable实例添加新的DockingManager

使用下面的代码,会出现anchorable,但是空白(内容不显示),按钮不起作用(浮动,自动隐藏,关闭等)。

控件 在将其(在运行时)拖入LayoutDocumentPane之后将其按预期开始工作,尽管关闭按钮不会出现(这是一个单独的按钮)问题)。

var anchorable = new LayoutAnchorable
{
    Content = control,
    Title = "Configuration",
    ContentId = "ConfigurationId",
    IsActive = true,
    IsSelected = true,
    CanFloat = true,
    CanAutoHide = false,
    CanClose = true,
    CanHide = false,
};

anchorable.AddToLayout( DockingManager, AnchorableShowStrategy.Left );

我试过导航AvalonDock来源,但我找不到任何明显的东西。

我希望以编程方式添加它,而不是使用MVVM。

1 个答案:

答案 0 :(得分:0)

如果您希望始终添加到您要添加的文档的同一窗格,则可以执行此操作。 HomePage.homepage是包含Docking管理器的窗口的静态成员。 doc是对当前文档的引用。

LayoutDocument ld = new LayoutDocument();
ld.Content = new NewDonor(ld);
LayoutDocumentPane pane =  ((doc.FindParent<LayoutDocumentPane>() ?? (HomePage.homepage.panal.Children?[0] as LayoutDocumentPane)) ?? new LayoutDocumentPane());
pane.Children.Add(ld);
if (HomePage.homepage.panal.ChildrenCount == 0)
{
    HomePage.homepage.panal.Children.Add(pane);
}
ld.IsSelected = true;