C# XmlLayoutSerializer创建新选项卡而不是加载

C# XmlLayoutSerializer创建新选项卡而不是加载,c#,wpf,mvvm,avalondock,C#,Wpf,Mvvm,Avalondock,我有一个用xaml描述的DockingManager,如下所示: <ad:DockingManager x:Name="DockingManager" Margin="5" DocumentHeaderTemplate="{DynamicResource DocumentHeaderTemplate}" DocumentPaneControlStyle="{DynamicResource DocumentPaneControlStyle}" DocumentsSourc

我有一个用xaml描述的DockingManager,如下所示:

<ad:DockingManager
  x:Name="DockingManager"
  Margin="5"
  DocumentHeaderTemplate="{DynamicResource DocumentHeaderTemplate}"
  DocumentPaneControlStyle="{DynamicResource DocumentPaneControlStyle}"
  DocumentsSource="{Binding TabControlItems, Source={StaticResource Locator}}"
  LayoutItemContainerStyle="{DynamicResource LayoutItemContainerStyle}" />
但它总是加载额外的选项卡,而不是加载我期望的方式。例如,如果我保存3个选项卡,然后加载布局,我将得到6个选项卡,3个空选项卡和我保存的布局,以及3个默认布局选项卡和适当的控件


有人知道发生了什么吗?我在任何地方都找不到关于它的任何东西

对于任何想知道的人

问题是在填充DocumentsSource之前加载了我的布局,因此它添加了空选项卡以使其正常工作。我尝试在WindowLoad上设置布局反序列化,但即使这样也太快了,所以我有了这个计时器:

mainWindow.Loaded += (sender, args) =>
        {
            // I couldn't find a proper place to put this. 
            // I need an event after 100% of all setup is completed
            var timer = new DispatcherTimer()
            {
                Interval = TimeSpan.FromSeconds(3)
            };

            timer.Tick += (s, e) =>
            {
                DockingManagerDeserialize(mainWindow);
                timer.Stop();
            };

            timer.Start();
        };
现在它开始工作了,虽然不理想,但这只是一个开始

mainWindow.Loaded += (sender, args) =>
        {
            // I couldn't find a proper place to put this. 
            // I need an event after 100% of all setup is completed
            var timer = new DispatcherTimer()
            {
                Interval = TimeSpan.FromSeconds(3)
            };

            timer.Tick += (s, e) =>
            {
                DockingManagerDeserialize(mainWindow);
                timer.Stop();
            };

            timer.Start();
        };