
Hi, I have this docking.
Where I have both the tools and the documents. When I go to deserialize it only restores the tools. If I switch to mdi, the layout is restored correctly.
Why ?
<docking:DockSite x:Name="DockSite"
DockPanel.Dock="Top" MdiKind="Tabbed"
DocumentItemTemplate="{StaticResource DockingWindowContentDataTemplate}"
DocumentItemContainerStyle="{StaticResource DocumentWindowStyle}"
ToolItemContainerStyle="{StaticResource ToolWindowStyle}"
ToolItemTemplate="{StaticResource DockingWindowContentDataTemplate}"
DocumentItemsSource="{Binding Workspace.Documents, UpdateSourceTrigger=PropertyChanged}"
ToolItemsSource="{Binding Workspace.Tools, UpdateSourceTrigger=PropertyChanged}">
<docking:SplitContainer Orientation="Vertical">
<docking:Workspace>
<docking:TabbedMdiHost />
</docking:Workspace>
<docking:ToolWindowContainer />
</docking:SplitContainer>
</docking:DockSite>
if (args.Node != null)
{
var serializedToolId = layoutModel.Tools.Keys.FirstOrDefault(s => s == args.Node.SerializationId);
if (serializedToolId != null)
{
var serializedToolType = layoutModel.Tools[serializedToolId];
Logger.LogInformation(
"Restoring layout for {ToolId} - {Type}",
serializedToolId,
serializedToolType.ToolType
);
var stateSource = layoutModel.States.FirstOrDefault(x => x.ToolId == serializedToolId);
object? state = null;
if (stateSource != null)
{
state = stateSource.State.FromJson(Type.GetType(stateSource.StateType));
}
var (toolViewModel, toolView) = await _workspaceService.BuildTool(
Type.GetType(serializedToolType.ToolType),
serializedToolId,
state
);
if (serializedToolType.ToolTypeEnum == ToolTypeEnum.Document)
{
_workspaceService.Add(toolViewModel);
// args.Window = dockSite.ContainerFromDocumentItem(toolViewModel);
args.Window = dockSite.ContainerFromDocumentItem(toolViewModel);
args.Window.ContainerDockedSize = args.Node.ContainerDockedSize;
if (args.Node.StandardMdiBounds != null)
{
args.Window.StandardMdiBounds = args.Node.StandardMdiBounds.Value;
}
args.Window.ContainerDockedSize = args.Node.ContainerDockedSize;
}
else
{
_workspaceService.Add(toolViewModel);
args.Window = dockSite.ContainerFromToolItem(toolViewModel);
}
args.Handled = true;
// await toolViewModel.OnShownAsync();
}