在Avalondock中,我如何通过ConentId找到LayoutContent

时间:2015-07-09 23:27:28

标签: c# avalondock

我有几个窗格包含所有内容都包含其ContentIds的内容。我希望能够找到其中一个窗格,以便将其设置为活动内容。让我们调用MyContentView。在另一个视图中,我按下一个类似这样的按钮:

LayoutContent content = FindContentById("myContent");
if(content == null)
{
    content = new MyContentView();
    content.ContentId = "myContent";
    this.MyLayoutDocumentPane.Children.Add(content);
}

this.MyDockingManager.ActiveContent = content;

我无法坚持使用该内容,因为我稍后将序列化布局,关闭应用并在启动时反序列化。这段代码不会运行,我也没有这个参考。

为什么不循环MyLayoutDocument窗格儿童? MyContentView可以浮动,当发生这种情况时,它不再存在于该容器中。

1 个答案:

答案 0 :(得分:4)

您可以枚举所有现有的LayoutContent项目,无论它们在哪个容器中,如下所示:

foreach (var lc in dockingManager.Layout.Descendents().OfType<LayoutContent>())
{ /* do something */ }

Descendents()Xceed.Wpf.AvalonDock.Layout.Extensions静态类中包含的扩展方法,因此您必须添加此using

using Xceed.Wpf.AvalonDock.Layout;