コード例 #1
0
        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))));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public bool ShouldSerializeChild(System.Windows.Markup.XamlDesignerSerializationManager manager)
 {
     return(default(bool));
 }
コード例 #4
0
        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));
        }