Hello,
I am trying to use the Actipro DockSite Save Layout and Load Layout features. However, when I attempt to load the layout back I get a different layout then what was saved. I have verified the Load layout is loading the same exact xml string that was saved.
Here's the xaml that is used to define the Docksite:
<docking:DockSite x:Name="RootDockSite" IsLiveSplittingEnabled="True" UseHostedRaftingWindows="False" UseHostedDockGuides="False" UseLayoutRounding="True" UseHostedAutoHidePopups="False"> <docking:DockSite.AutoHideBottomContainers> <docking:ToolWindowContainer> <docking:ToolWindow Title="Journal" CanClose="False"> <localControls:Journal DataContext="{Binding}" ></localControls:Journal> </docking:ToolWindow> </docking:ToolWindowContainer> </docking:DockSite.AutoHideBottomContainers> <docking:SplitContainer> <docking:SplitContainer Orientation="Vertical"> <docking:SplitContainer> <!-- Top Left Dock - Workspace Hosts Mimic and other Tabs Start--> <docking:ToolWindowContainer docking:DockSite.ToolWindowsTabPlacement="Top"> <docking:ToolWindow Title="Device 8500" CanClose="False" CanBecomeDocument="False"> <Grid> <ScrollViewer x:Name="Mimic" HorizontalScrollBarVisibility="Auto" RenderTransformOrigin="0.5,0.5" SnapsToDevicePixels="True"> <sharedControls:Rack x:Name="rackControl" DataContext="{Binding}" SelectedCard="{Binding DiagnosticsVM.SelectedCard, Mode=OneWayToSource}" ReadCardInfo="rackControl_ReadCardInfo" WriteCardInfo="rackControl_WriteCardInfo" MouseDown="rackControl_MouseDown" SerialNumber="{Binding DiagnosticsVM.SerialNum, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" BackplaneId="{Binding DiagnosticsVM.BackplaneId, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" ErrorMessageVersion="{x:Static cultureVM:SessionViewResources.Rack_Version}" ErrorMessageBackplaneId=""> <sharedControls:Rack.HWVersion> <Binding Path="DiagnosticsVM.HWVersion" Mode="TwoWay" UpdateSourceTrigger="LostFocus" > </Binding> </sharedControls:Rack.HWVersion> <sharedControls:Rack.ManufacturingDate> <Binding Path="DiagnosticsVM.MfgDate" Mode="TwoWay" UpdateSourceTrigger="LostFocus" ></Binding> </sharedControls:Rack.ManufacturingDate> <sharedControls:Rack.RenderTransform> <ScaleTransform ScaleX="{Binding ElementName=sliderScale, Path=Value}" ScaleY="{Binding ElementName=sliderScale, Path=Value}" ></ScaleTransform> </sharedControls:Rack.RenderTransform> </sharedControls:Rack> </ScrollViewer> <Slider x:Name="sliderScale" HorizontalAlignment="Left" VerticalAlignment="Top" Opacity=".5" TickPlacement="TopLeft" Orientation="Vertical" Height="50" SmallChange="0.2" Value=".7" Margin="5, 5, 0,0" Minimum="0.5" Maximum="3" LargeChange="0.4" TickFrequency="0.2"></Slider> </Grid> </docking:ToolWindow> </docking:ToolWindowContainer> <!-- Top Left Dock - Workspace Hosts Mimic and other Tabs End--> <!-- Right side tabbed panel Start--> <docking:ToolWindowContainer docking:DockSite.ControlSize="50,200"> <!-- Session Properties Start--> <docking:ToolWindow Title="Session Details" CanClose="False" > <ScrollViewer x:Name="SessionProperties"> <Grid Style="{StaticResource PropertiesGridStyle}" Margin="0,0,0,10"> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="Session Name:" Style="{StaticResource PromptStyle}"></TextBlock> <TextBlock Grid.Row="1" Grid.Column="0" Text="Device Address:" Style="{StaticResource PromptStyle}"></TextBlock> <TextBlock Grid.Row="2" Grid.Column="0" Text="Hardware ID:" Style="{StaticResource PromptStyle}"></TextBlock> <TextBlock Grid.Row="3" Grid.Column="0" Text="Device Name:" Style="{StaticResource PromptStyle}"></TextBlock> <TextBlock Grid.Row="4" Grid.Column="0" Text="Device Type:" Style="{StaticResource PromptStyle}"></TextBlock> <TextBlock Grid.Row="5" Grid.Column="0" Text="Firmware Version:" Style="{StaticResource PromptStyle}"></TextBlock> <TextBlock Grid.Row="6" Grid.Column="0" Text="Connected Status:" Style="{StaticResource PromptStyle}"></TextBlock> <TextBlock Grid.Row="0" Grid.Column="1" Style="{StaticResource LabelStyle}" Text="{Binding Session.Name}"></TextBlock> <TextBlock Grid.Row="1" Grid.Column="1" Style="{StaticResource LabelStyle}" Text="{Binding Session.DeviceAddress}"></TextBlock> <TextBlock Grid.Row="2" Grid.Column="1" Style="{StaticResource LabelStyle}" Text="{Binding Session.DeviceModel.DeviceHardwareId}"></TextBlock> <TextBlock Grid.Row="3" Grid.Column="1" Style="{StaticResource LabelStyle}" Text="{Binding Session.DeviceModel.Name}"></TextBlock> <TextBlock Grid.Row="4" Grid.Column="1" Style="{StaticResource LabelStyle}" Text="{Binding Session.DeviceType, Mode=OneWay}"></TextBlock> <TextBlock Grid.Row="5" Grid.Column="1" Style="{StaticResource LabelStyle}" Text="{Binding Session.DeviceModel.FirmwareVersion, Mode=OneWay}"></TextBlock> <CheckBox Grid.Row="6" Grid.Column="1" IsChecked="{Binding Session.IsConnected, Mode=OneWay}" IsEnabled="False" Style="{StaticResource RedGreenCheckBox}" Width="13" Height="13" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,0,0,0"></CheckBox> </Grid> </ScrollViewer> </docking:ToolWindow> <!-- Session Properties End--> <!-- Properties (Plotting for now) Start--> <docking:ToolWindow Title="Properties" CanClose="False"> <syncfusionProps:PropertyGrid SelectedObject="{Binding SelectedObjectForPropertyGrid}" ></syncfusionProps:PropertyGrid> </docking:ToolWindow> <!-- Properties (Plotting for now) End--> <!-- Data Grid Start--> <docking:ToolWindow Title="Scalar Data" CanClose="False"> <Grid x:Name="LiveDataGrid"> <localControls:ScalarDataGrid x:Name="dataGrid" DataContext="{Binding}"/> </Grid> </docking:ToolWindow> <!-- Data Grid End--> <docking:ToolWindow Title="Live Waveform" CanRaft="False" CanClose="False"> <Grid x:Name="WaveformChart"> <localControls:Waveform x:Name="waveformPlot" DataContext="{Binding}"/> </Grid> </docking:ToolWindow> <docking:ToolWindow Title="Strip Chart" CanRaft="False" CanClose="False"> <Grid x:Name="LiveDataChart"> <localControls:MyPlotControlXY x:Name="plotControl" DataContext="{Binding}"/> </Grid> </docking:ToolWindow> <!-- Embedded doc site for waveform data plots End--> <!-- Tool Box Start--> <docking:ToolWindow Title="Tool Box" CanClose="False"> <ScrollViewer x:Name="Toolbox"> <localControls:Toolbox DataContext="{Binding}"></localControls:Toolbox> </ScrollViewer> </docking:ToolWindow> <!-- Tool Box End--> </docking:ToolWindowContainer> <!-- Right side tabbed panel End--> </docking:SplitContainer> <!-- Bottom Dock Panel Start--> <docking:ToolWindowContainer ScrollViewer.CanContentScroll="True" x:Name="BottomDockContainer" > <docking:ToolWindow Title="Diagnostics" CanClose="False" x:Name="DiagnosticToolWindow"> <ScrollViewer x:Name="Diagnostics" HorizontalScrollBarVisibility="Auto"> <local:DiagnosticsView DataContext="{Binding DiagnosticsVM}"></local:DiagnosticsView> </ScrollViewer> </docking:ToolWindow> </docking:ToolWindowContainer> <!-- Bottom Dock Panel End--> </docking:SplitContainer> </docking:SplitContainer> </docking:DockSite>
Here's the c# I am using to save and load the docksite:
DockSiteLayoutSerializer layoutSerializer = new DockSiteLayoutSerializer();
string layoutString = layoutSerializer.SaveToString(RootDockSite);
... save string to repository
... after reloading exact xml layout string from repository
layoutSerializer.LoadFromString(layoutString, RootDockSite);
here's the serialized DockSite layout xml:
<DockSiteLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SerializationFormat="ToolWindowsOnly">
<AutoHideHost>
<AutoHideTabStrip Side="Bottom">
<ToolWindowContainer AutoHideSize="200,200" DockedSize="200,200" DocumentSize="200,200" FloatingSize="200,200" Size="200,200" SelectedWindowUniqueId="56f6a1d3-dd43-4cee-84c5-8401b51f7b91">
<UIElement xsi:type="ToolWindowRef" UniqueId="56f6a1d3-dd43-4cee-84c5-8401b51f7b91" />
</ToolWindowContainer>
</AutoHideTabStrip>
</AutoHideHost>
<Content xsi:type="SplitContainer" AutoHideSize="1330,601" DockedSize="1330,601" DocumentSize="1330,601" FloatingSize="1330,601" Size="1330,601" Orientation="Horizontal">
<UIElement xsi:type="SplitContainer" AutoHideSize="1330,601" DockedSize="1330,601" DocumentSize="1330,601" FloatingSize="1330,601" Size="1330,601" Orientation="Vertical">
<UIElement xsi:type="SplitContainer" AutoHideSize="1330,298" DockedSize="1330,298" DocumentSize="1330,298" FloatingSize="1330,298" Size="1330,298" Orientation="Horizontal">
<UIElement xsi:type="ToolWindowContainer" AutoHideSize="1060,298" DockedSize="1060,298" DocumentSize="1060,298" FloatingSize="1060,298" Size="1060,298" SelectedWindowUniqueId="ca0b9aa9-f327-400b-b6c1-dad757a88de8">
<UIElement xsi:type="ToolWindowRef" UniqueId="ca0b9aa9-f327-400b-b6c1-dad757a88de8" />
</UIElement>
<UIElement xsi:type="ToolWindowContainer" AutoHideSize="265,298" DockedSize="265,298" DocumentSize="265,298" FloatingSize="265,298" Size="265,298" SelectedWindowUniqueId="86c3497d-8f1d-4a6e-aea9-1d15ad447244">
<UIElement xsi:type="ToolWindowRef" UniqueId="f42980ba-b332-40c7-bad6-532e581f5d94" />
<UIElement xsi:type="ToolWindowRef" UniqueId="d6eff7e7-a34c-4f3e-b1c7-e3ce45d57a86" />
<UIElement xsi:type="ToolWindowRef" UniqueId="4776cba1-3a11-41ea-a2b7-6dbc13c2e9fd" />
<UIElement xsi:type="ToolWindowRef" UniqueId="cc00c264-0dcf-4daf-b1d6-4c62497bf84f" />
<UIElement xsi:type="ToolWindowRef" UniqueId="86c3497d-8f1d-4a6e-aea9-1d15ad447244" />
</UIElement>
</UIElement>
<UIElement xsi:type="SplitContainer" AutoHideSize="1330,298" DockedSize="1330,298" DocumentSize="1330,298" FloatingSize="1330,298" Size="1330,298" Orientation="Horizontal">
<UIElement xsi:type="ToolWindowContainer" AutoHideSize="1060,298" DockedSize="1060,298" DocumentSize="1060,298" FloatingSize="1060,298" Size="1060,298" SelectedWindowUniqueId="520f82a3-d091-4157-9893-c3c596da5a7d">
<UIElement xsi:type="ToolWindowRef" UniqueId="520f82a3-d091-4157-9893-c3c596da5a7d" />
</UIElement>
<UIElement xsi:type="ToolWindowContainer" AutoHideSize="265,298" DockedSize="265,298" DocumentSize="265,298" FloatingSize="265,298" Size="265,298" SelectedWindowUniqueId="2ef28e12-f83f-4c56-a68b-1266b886789d">
<UIElement xsi:type="ToolWindowRef" UniqueId="2ef28e12-f83f-4c56-a68b-1266b886789d" />
</UIElement>
</UIElement>
</UIElement>
</Content>
<ToolWindows>
<ToolWindow UniqueId="56f6a1d3-dd43-4cee-84c5-8401b51f7b91" AutoHideSize="200,200" DockedSize="200,200" DocumentSize="200,200" FloatingSize="200,200" Size="200,200" IsOpen="true" LastState="Docked" State="AutoHide" />
<ToolWindow UniqueId="ca0b9aa9-f327-400b-b6c1-dad757a88de8" AutoHideSize="1060,200" DockedSize="1060,200" DocumentSize="1060,200" FloatingSize="1060,200" Size="1060,200" IsOpen="true" LastState="Docked" State="Docked" />
<ToolWindow UniqueId="f42980ba-b332-40c7-bad6-532e581f5d94" AutoHideSize="265,200" DockedSize="265,200" DocumentSize="265,200" FloatingSize="265,200" Size="265,200" IsOpen="true" LastState="Docked" State="Docked" />
<ToolWindow UniqueId="2ef28e12-f83f-4c56-a68b-1266b886789d" AutoHideSize="265,200" DockedSize="265,200" DocumentSize="265,200" FloatingSize="265,200" Size="265,200" IsOpen="true" LastState="Docked" State="Docked" />
<ToolWindow UniqueId="d6eff7e7-a34c-4f3e-b1c7-e3ce45d57a86" AutoHideSize="265,200" DockedSize="265,200" DocumentSize="265,200" FloatingSize="265,200" Size="265,200" IsOpen="true" LastState="Docked" State="Docked" />
<ToolWindow UniqueId="4776cba1-3a11-41ea-a2b7-6dbc13c2e9fd" AutoHideSize="265,200" DockedSize="265,200" DocumentSize="265,200" FloatingSize="265,200" Size="265,200" IsOpen="true" LastState="Docked" State="Docked" />
<ToolWindow UniqueId="cc00c264-0dcf-4daf-b1d6-4c62497bf84f" AutoHideSize="265,200" DockedSize="265,200" DocumentSize="265,200" FloatingSize="265,200" Size="265,200" IsOpen="true" LastState="Docked" State="Docked" />
<ToolWindow UniqueId="86c3497d-8f1d-4a6e-aea9-1d15ad447244" AutoHideSize="265,200" DockedSize="265,200" DocumentSize="265,200" FloatingSize="265,200" Size="265,200" IsOpen="true" LastState="Docked" State="Docked" />
<ToolWindow UniqueId="520f82a3-d091-4157-9893-c3c596da5a7d" AutoHideSize="1060,298" DockedSize="1060,298" DocumentSize="1060,298" FloatingSize="1060,298" Size="1060,298" IsOpen="true" LastState="Docked" Name="DiagnosticToolWindow" State="Docked" />
</ToolWindows>
</DockSiteLayout>
As I mentioned. When I reload this saved layout the layout is not the same is it was when saved. I can provide screenshots if needed.
Regards,
Shawn