2012-11-09 66 views
0

我有以下AvalonDock(我使用的是1.3版本)佈局:AvalonDock DocumentPane無法正常恢復

<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); 
    } 

保存和恢復所有DockablePanes工作f ine,但問題是DocumentPane無法正確恢復。當我嘗試打開新文檔時,他們沒有顯示。

我用立即窗口在Visual Studio中進行以下查詢

調用MainDockingManager.RestoreLayout()前:

documentPane.IsMainDocumentPane 
true 

調用RestoreLayout()後:

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

這樣做可以調用RestoreLayout()後也不起作用:

MainDockingManager.MainDocumentPane = documentPane; 

任何想法我做錯了什麼,或者如果有什麼我在這裏失蹤?

+0

視覺上發生了什麼,在您的用戶界面?有沒有加載任何東西? – Damascus

回答

0

我通過在添加新文檔時不使用指定的DocumentPane(「documentPane」)來解決此問題。相反,我使用DockingManager.MainDocumentPane屬性來操作DocumentPane。