protected override void Write(XamlMarkdownWriter renderer, HtmlEntityInline obj) { var txt = obj.Transcoded.Text.Substring(obj.Transcoded.Start, obj.Transcoded.Length); using (var xaml = new XamlXmlReader(new StringReader(txt), new XamlXmlReaderSettings() { })) { while (xaml.Read()) { switch (xaml.NodeType) { case XamlNodeType.NamespaceDeclaration: renderer.WriteNamespace(xaml.Namespace); break; case XamlNodeType.StartObject: renderer.WriteStartObject(xaml.Type); break; case XamlNodeType.GetObject: renderer.WriteGetObject(); break; case XamlNodeType.EndObject: renderer.WriteEndObject(); break; case XamlNodeType.StartMember: renderer.WriteStartMember(xaml.Member); break; case XamlNodeType.EndMember: renderer.WriteEndMember(); break; case XamlNodeType.Value: if (xaml.Value is string text) { renderer.WriteValue(text); } else { renderer.WriteValue(xaml.Value.ToString()); // todo: use xaml to text converter } break; default: throw new InvalidOperationException(); } } } } // proc Write