I've got a weird problem here and I'm not sure if it's a bug or a problem in my code.
i'm using the following code to serialize the layout into my app settings:
using (var memoryStream = new MemoryStream()) {new XmlLayoutSerializer(MainWindow.sharedDockingManager).Serialize(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin);var layout = new StreamReader(memoryStream).ReadToEnd(); Settings.Default.AvalonDockLayout = layout; }
And this to deserialize:
string layout = Settings.Default.AvalonDockLayout;var bytes = Encoding.Default.GetBytes(layout); MemoryStream memoryStream = new MemoryStream(); memoryStream.Write(bytes, 0, bytes.Length); memoryStream.Seek(0, SeekOrigin.Begin); XmlLayoutSerializer layoutSerializer = new XmlLayoutSerializer(MainWindow.sharedDockingManager); layoutSerializer.LayoutSerializationCallback += (s, e) => {if (!string.IsNullOrWhiteSpace(e.Model.ContentId)) e.Content = Workspace.This.AvalonDockAdapter.OpenLayoutItemByContentId( e.Model.ContentId); }; layoutSerializer.Deserialize(memoryStream);
Where the callback uses this helper method to get or create a viewModel:
case"CommoditySearchToolWindow":var commoditySearchToolWindowViewModel = Workspace.This.AvalonDockAdapter.GetAnchorableOfType(typeof(CommoditySearchToolWindowViewModel));if (commoditySearchToolWindowViewModel != null)return commoditySearchToolWindowViewModel; commoditySearchToolWindowViewModel = new CommoditySearchToolWindowViewModel(); Workspace.This.AvalonDockAdapter.AddAnchorable(commoditySearchToolWindowViewModel, false);return commoditySearchToolWindowViewModel;
Using version 2.0.1737.0 built from source.