我有以下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的已加载事件的事件处理程序:
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 );
}
保存和恢复所有DockablePanes工作正常,但问题是DocumentPane没有正确恢复。当我尝试打开新文档时,它们不显示。
我已经使用Visual Studio中的即时窗口进行了以下查询
在调用MainDockingManager.RestoreLayout()
之前
documentPane.IsMainDocumentPane
true
在调用RestoreLayout()
之后
documentPane.IsMainDocumentPane
null
MainDockingManager.MainDocumentPane.GetHashCode()
16306004
documentPane.GetHashCode()
15125992
在调用RestoreLayout()
之后执行此操作也不起作用:
MainDockingManager.MainDocumentPane = documentPane;
你知道我做错了什么吗,或者我是不是漏掉了什么?
发布于 2012-11-12 19:22:43
我通过在添加新文档时不使用命名DocumentPane ("documentPane")修复了这个问题。相反,我使用DockingManager.MainDocumentPane属性来操作DocumentPane。
https://stackoverflow.com/questions/13314227
复制相似问题