次の 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 );
}
すべての DockablePanes の保存と復元は正常に機能しますが、問題は DocumentPane が正しく復元されないことです。新しいドキュメントを開こうとすると、それらが表示されません。
Visual Studio のイミディエイト ウィンドウを使用して、次のクエリを作成しました。
電話する前にMainDockingManager.RestoreLayout()
:
documentPane.IsMainDocumentPane
true
呼び出した後RestoreLayout()
:
documentPane.IsMainDocumentPane
null
MainDockingManager.MainDocumentPane.GetHashCode()
16306004
documentPane.GetHashCode()
15125992
呼び出し後にこれをRestoreLayout()
実行しても機能しません。
MainDockingManager.MainDocumentPane = documentPane;
私が間違っていること、またはここに欠けているものがあるかどうか、何か考えはありますか?