나는 다음과 같은 AvalonDock (I 버전 1.3을 사용하고 있습니다) 레이아웃이 있습니다AvalonDock DocumentPane 제대로 복원하지
void MainDockingManager_Loaded(object sender, RoutedEventArgs e)
{
_layoutStateFilePath = Path.Combine(ApplicationSettingsService.UserSettingsDirectory, LayoutStateFileName);
if (File.Exists(_layoutStateFilePath))
{
MainDockingManager.RestoreLayout(_layoutStateFilePath);
}
}
:
<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의로드 이벤트에 대한 이벤트 핸들러 그리고 윈도우 닫기 이벤트 핸들러 :
private void ApplicationViewsWindow_Closing(object sender, CancelEventArgs e)
{
MainDockingManager.SaveLayout(_layoutStateFilePath);
}
모든 DockablePane 저장 및 복원 f 그러나 문제는 DocumentPane이 올바르게 복원되지 않는다는 것입니다. 새 문서를 열려고하면 표시되지 않습니다.
나는 MainDockingManager.RestoreLayout()
를 호출하기 전에 다음과 같은 쿼리
를 만들기 위해 비주얼 스튜디오에서 직접 실행 창을 사용했습니다 :
documentPane.IsMainDocumentPane
true
RestoreLayout()
를 호출 한 후 :
documentPane.IsMainDocumentPane
null
MainDockingManager.MainDocumentPane.GetHashCode()
16306004
documentPane.GetHashCode()
15125992
가 이렇게 RestoreLayout()
를 호출 한 후 어느 하나도 작동하지 않습니다.
MainDockingManager.MainDocumentPane = documentPane;
내가 잘못하고있는 것에 대한 아이디어가 있습니까? 아니면 여기에 뭔가 빠졌습니까?
UI에서 시각적으로 어떻게됩니까? 아무것도로드되지 않았습니까? – Damascus