static object CreateTemplate(string templateTypeName, object content, Type targetType = null) { var contentXamlStringBuilder = new System.Text.StringBuilder(); var dsm = new Windows.Markup.XamlDesignerSerializationManager(XmlWriter.Create(contentXamlStringBuilder, new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true, NamespaceHandling = NamespaceHandling.OmitDuplicates })); dsm.XamlWriterMode = Windows.Markup.XamlWriterMode.Expression; // Save bindings as expressions - uses the registered ExpressionConverter for Bindings. Source: https://www.codeproject.com/Articles/27158/XamlWriter-and-Bindings-Serialization BindingConverter.EnsureRegistered(); Windows.Markup.XamlWriter.Save(content, dsm); var contentXaml = contentXamlStringBuilder.ToString(); string xaml = $@"<{templateTypeName}{(targetType is null ? "" : $" TargetType=\"{targetType.Name}\"")} xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" > {contentXaml} </{templateTypeName}>" ; return(Windows.Markup.XamlReader.Load(XmlReader.Create(new StringReader(xaml)))); }
public static T Clone <T>(T o) { var sb = new System.Text.StringBuilder(); var writer = XmlWriter.Create(sb, new XmlWriterSettings { Indent = true, ConformanceLevel = ConformanceLevel.Fragment, OmitXmlDeclaration = true, NamespaceHandling = NamespaceHandling.OmitDuplicates, }); var manager = new System.Windows.Markup.XamlDesignerSerializationManager(writer); manager.XamlWriterMode = System.Windows.Markup.XamlWriterMode.Expression; System.Windows.Markup.XamlWriter.Save(o, manager); var stringReader = new StringReader(sb.ToString()); var xmlReader = XmlReader.Create(stringReader); var item = System.Windows.Markup.XamlReader.Load(xmlReader); if (item == null) { throw new ArgumentNullException("Could not be cloned."); } return((T)item); }
public bool ShouldSerializeChild(System.Windows.Markup.XamlDesignerSerializationManager manager) { return(default(bool)); }
public bool ShouldSerializeText(System.Windows.Markup.XamlDesignerSerializationManager manager) { Contract.Requires(manager != null); return(default(bool)); }
public static MarkupObject GetMarkupObjectFor(Object instance, System.Windows.Markup.XamlDesignerSerializationManager manager) { Contract.Ensures(Contract.Result <System.Windows.Markup.Primitives.MarkupObject>() != null); return(default(MarkupObject)); }