我有几个窗格包含所有内容都包含其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可以浮动,当发生这种情况时,它不再存在于该容器中。
答案 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;