public static Label Create(XmlReader reader, IWidget parent = null) { Label label = new Label(); label.ReadCurrentElement(reader, parent); if (reader.GetAttribute("alignment") != null) { label.SetAlignment((TextAnchor)Enum.Parse(typeof(TextAnchor), reader.GetAttribute("alignment"))); } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Text": string tType = reader.GetAttribute("type"); switch (tType) { case "formatted": label.textType = TextType.Formatted; label.Text = reader.ReadElementContentAsString(); break; case "dynamic": label.textType = TextType.Dynamic; string argName = "@" + reader.GetAttribute("argument"); string propName = reader.ReadElementContentAsString(); label.LinkArgNameToValue(argName, propName, label.valueIndex++); label.Text = propName; break; case "function": label.textModifier = new GenericAction(label, "OnTextChange", "UI", reader.ReadElementContentAsString()); break; case "script": throw new NotImplementedException(); default: case "static": label.textType = TextType.Static; label.Text = reader.ReadElementContentAsString(); break; } break; default: label.ReadSubElement(reader); break; } } } label.FinalizeRead(); return(label); }