首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AvalonDock DocumentPane未正确恢复

AvalonDock DocumentPane未正确恢复
EN

Stack Overflow用户
提问于 2012-11-10 02:57:57
回答 1查看 899关注 0票数 0

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

代码语言:javascript
运行
复制
<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的已加载事件的事件处理程序:

代码语言:javascript
运行
复制
    void MainDockingManager_Loaded( object sender, RoutedEventArgs e )
    {
        _layoutStateFilePath = Path.Combine( ApplicationSettingsService.UserSettingsDirectory, LayoutStateFileName );

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

和窗口关闭事件处理程序:

代码语言:javascript
运行
复制
    private void ApplicationViewsWindow_Closing( object sender, CancelEventArgs e )
    {
        MainDockingManager.SaveLayout( _layoutStateFilePath );
    }

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

我已经使用Visual Studio中的即时窗口进行了以下查询

在调用MainDockingManager.RestoreLayout()之前

代码语言:javascript
运行
复制
documentPane.IsMainDocumentPane
true

在调用RestoreLayout()之后

代码语言:javascript
运行
复制
documentPane.IsMainDocumentPane
null
MainDockingManager.MainDocumentPane.GetHashCode()
16306004
documentPane.GetHashCode()
15125992

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

代码语言:javascript
运行
复制
MainDockingManager.MainDocumentPane = documentPane;

你知道我做错了什么吗,或者我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-12 19:22:43

我通过在添加新文档时不使用命名DocumentPane ("documentPane")修复了这个问题。相反,我使用DockingManager.MainDocumentPane属性来操作DocumentPane。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13314227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档