AvalonDock DocumentPane无法正确还原

时间:2012-11-09 18:57:57

标签: wpf avalondock

我有以下AvalonDock(我使用的是1.3版)布局:

<AvalonDock:DockingManager Grid.Row="1"
                               x:Name="MainDockingManager"
                               Loaded="MainDockingManager_Loaded">
        <AvalonDock:ResizingPanel Orientation="Vertical">
            <AvalonDock:ResizingPanel Orientation="Horizontal">
                <AvalonDock:DockablePane x:Name="LeftDockablePane"
                                         AvalonDock:ResizingPanel.ResizeWidth="250" />
                <AvalonDock:ResizingPanel Orientation="Vertical">
                    <AvalonDock:DocumentPaneResizingPanel>
                        <AvalonDock:DocumentPane x:Name="documentPane"/>
                    </AvalonDock:DocumentPaneResizingPanel>
                    <AvalonDock:DockablePane x:Name="BottomDockablePane"
                                             AvalonDock:ResizingPanel.ResizeHeight="200" />
                </AvalonDock:ResizingPanel>
            </AvalonDock:ResizingPanel>
        </AvalonDock:ResizingPanel>
    </AvalonDock:DockingManager>

这是DockingManager的Loaded事件的事件处理程序:

    void MainDockingManager_Loaded( object sender, RoutedEventArgs e )
    {
        _layoutStateFilePath = Path.Combine( ApplicationSettingsService.UserSettingsDirectory, LayoutStateFileName );

        if ( File.Exists( _layoutStateFilePath ) )
        {
            MainDockingManager.RestoreLayout( _layoutStateFilePath );
        }
    }

窗口关闭事件处理程序:

    private void ApplicationViewsWindow_Closing( object sender, CancelEventArgs e )
    {
        MainDockingManager.SaveLayout( _layoutStateFilePath );
    }

保存和恢复所有DockablePane的工作正常,但问题是DocumentPane无法正确恢复。当我尝试打开新文档时,他们没有显示。

我在Visual Studio中使用了立即窗口进行以下查询

在致电MainDockingManager.RestoreLayout()之前:

documentPane.IsMainDocumentPane
true

致电RestoreLayout()后:

documentPane.IsMainDocumentPane
null
MainDockingManager.MainDocumentPane.GetHashCode()
16306004
documentPane.GetHashCode()
15125992

调用RestoreLayout()后执行此操作也不起作用:

MainDockingManager.MainDocumentPane = documentPane;

任何想法我做错了或者我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我在添加新文档时没有使用指定的DocumentPane(“documentPane”)来修复此问题。相反,我使用DockingManager.MainDocumentPane属性来操作DocumentPane。