public override void ReadXml(XmlReader reader) { reader.MoveToContent(); if (reader.IsEmptyElement) { reader.Read(); ComputeVisibility(); return; } var localName = reader.LocalName; reader.Read(); while (true) { if (reader.LocalName.Equals(localName) && (reader.NodeType == XmlNodeType.EndElement)) { break; } if (reader.NodeType == XmlNodeType.Whitespace) { reader.Read(); continue; } XmlSerializer serializer; if (reader.LocalName.Equals("LayoutAnchorablePaneGroup")) { serializer = new XmlSerializer(typeof(LayoutAnchorablePaneGroup)); } else { var type = LayoutRoot.FindType(reader.LocalName); if (type == null) { throw new ArgumentException("AvalonDock.LayoutAnchorableFloatingWindow doesn't know how to deserialize " + reader.LocalName); } serializer = new XmlSerializer(type); } RootPanel = ( LayoutAnchorablePaneGroup )serializer.Deserialize(reader); } reader.ReadEndElement(); }
private object ReadElement(XmlReader reader) { while (reader.NodeType == XmlNodeType.Whitespace) { reader.Read(); } if (reader.NodeType == XmlNodeType.EndElement) { return(null); } XmlSerializer serializer; switch (reader.LocalName) { case "LayoutAnchorablePaneGroup": serializer = new XmlSerializer(typeof(LayoutAnchorablePaneGroup)); break; case "LayoutAnchorablePane": serializer = new XmlSerializer(typeof(LayoutAnchorablePane)); break; case "LayoutAnchorable": serializer = new XmlSerializer(typeof(LayoutAnchorable)); break; case "LayoutDocumentPaneGroup": serializer = new XmlSerializer(typeof(LayoutDocumentPaneGroup)); break; case "LayoutDocumentPane": serializer = new XmlSerializer(typeof(LayoutDocumentPane)); break; case "LayoutDocument": serializer = new XmlSerializer(typeof(LayoutDocument)); break; case "LayoutAnchorGroup": serializer = new XmlSerializer(typeof(LayoutAnchorGroup)); break; case "LayoutPanel": serializer = new XmlSerializer(typeof(LayoutPanel)); break; case "LayoutDocumentFloatingWindow": serializer = new XmlSerializer(typeof(LayoutDocumentFloatingWindow)); break; case "LayoutAnchorableFloatingWindow": serializer = new XmlSerializer(typeof(LayoutAnchorableFloatingWindow)); break; case "LeftSide": case "RightSide": case "TopSide": case "BottomSide": if (reader.IsEmptyElement) { reader.Read(); return(null); } return(reader.Read()); default: var type = LayoutRoot.FindType(reader.LocalName); if (type == null) { throw new ArgumentException("AvalonDock.LayoutRoot doesn't know how to deserialize " + reader.LocalName); } serializer = new XmlSerializer(type); break; } return(serializer.Deserialize(reader)); }