Ejemplo n.º 1
0
        private XamlPropertySetter LookupReflectionProperty(IXamlNode reader)
        {
            XamlPropertySetter prop = XamlReflectionPropertyForName(Type, reader.LocalName);

            if (prop != null)
            {
                return(prop);
            }

            object        target = Object;
            MutableObject obj    = Object as MutableObject;

            if (obj != null)
            {
                target = obj.Object;
            }

            XamlPropertySetter evnt = XamlReflectionEventForName(target, reader.LocalName);

            if (evnt != null)
            {
                return(evnt);
            }

            XamlPropertySetter attached = XamlImplicitAttachedPropertyForName(target, reader.LocalName);

            if (attached != null)
            {
                return(attached);
            }

            return(null);
        }
Ejemplo n.º 2
0
        public void Visit(IXamlNode node)
        {
            if (null == node)
            {
                throw new ArgumentNullException(nameof(node));
            }

            VisitNode(node);
        }
Ejemplo n.º 3
0
        private XamlPropertySetter LookupAttachedProperty(IXamlNode reader)
        {
            Accessors accessors;
            var       key = new CachedAccessorKey(reader.LocalName, Parser.ResolveType());

            if (!XamlContext.AttachedPropertyAccessorCache.TryGetValue(key, out accessors))
            {
                if (key.Type != null && key.Name != null)
                {
                    var name = AttachedPropertyName(key.Name);
                    accessors = CreateAttachedAccessors(this, key.Type, name);
                }
                XamlContext.AttachedPropertyAccessorCache.Add(key, accessors);
            }

            return(XamlAttachedPropertySetter.Create(this, accessors));
        }
Ejemplo n.º 4
0
        public override XamlPropertySetter LookupProperty(IXamlNode reader)
        {
            if (IsNameProperty(reader))
            {
                return(new XamlNamePropertySetter(this, (DependencyObject)Object));
            }

            XamlPropertySetter prop = LookupAttachedProperty(reader);

            if (prop != null)
            {
                return(prop);
            }

            prop = LookupReflectionProperty(reader);

            return(prop);
        }
Ejemplo n.º 5
0
        protected override void VisitCloseTag(IXamlNode node)
        {
            base.VisitCloseTag(node);

            if (0 == node.Children.Count)
            {
                return;
            }

            builder.Append('<').Append('/');

            if (!String.IsNullOrEmpty(node.Prefix))
            {
                builder.Append(node.Prefix).Append(':');
            }

            builder.Append(node.Name).Append('>');
        }
Ejemplo n.º 6
0
        private bool IsAttachedProperty(IXamlNode reader)
        {
            int dot = reader.LocalName.IndexOf('.');

            if (dot < 0)
            {
                return(false);
            }

            if (reader.NodeType == XmlNodeType.Attribute)
            {
                return(true);
            }

            Type t = Parser.ResolveType();

            if (t.IsAssignableFrom(Type))
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 7
0
 private bool IsNameProperty(IXamlNode reader)
 {
     return(reader.LocalName == "Name" && Type.IsSubclassOf(typeof(DependencyObject)));
 }
Ejemplo n.º 8
0
 public override XamlPropertySetter LookupProperty(IXamlNode reader)
 {
     throw Parser.ParseException("Property element {0} found inside property element {1}.", reader.LocalName, Name);
 }
Ejemplo n.º 9
0
 public abstract XamlPropertySetter LookupProperty(IXamlNode reader);
Ejemplo n.º 10
0
 protected virtual void VisitCloseTag(IXamlNode node)
 {
 }
Ejemplo n.º 11
0
		private bool IsAttachedProperty (IXamlNode reader)
		{
			int dot = reader.LocalName.IndexOf ('.');

			if (dot < 0)
				return false;

			if (reader.NodeType == XmlNodeType.Attribute)
				return true;

			Type t = Parser.ResolveType ();
			if (t.IsAssignableFrom (Type))
				return false;
			return true;
		}
Ejemplo n.º 12
0
 protected virtual void VisitNode(IXamlNode node)
 {
     VisitOpenTag(node);
     VisitNodeChildren(node.Children);
     VisitCloseTag(node);
 }
Ejemplo n.º 13
0
		public override XamlPropertySetter LookupProperty (IXamlNode reader)
		{
			throw Parser.ParseException ("Property element {0} found inside property element {1}.", reader.LocalName, Name);
		}
Ejemplo n.º 14
0
		void XamlNode_OnAttribute (XamlNode node, XamlAttribute ai)
		{
			if (!(CurrentElement is XamlObjectElement))
				return;
			if (IsStaticResourceElement ())
				return;
			currentNode = ai;
			ParseAttribute (CurrentElement as XamlObjectElement, ai);
			currentNode = node;
		}
Ejemplo n.º 15
0
		void XamlNode_OnElementStart (XamlNode node) {
			reader = node;
			currentNode = (IXamlNode) node;

			switch (node.NodeType) {
				case XmlNodeType.Element:
					Log ("Next node: {0}", reader.Name);
					ParseElement ();
					break;
				case XmlNodeType.Text:
					Log ("Next node: {0}", reader.Name);
					ParseText ();
					break;
				case XmlNodeType.Whitespace:
					Log ("Next node: {0}", reader.Name);

					ParseWhitespace ();
					break;
				case XmlNodeType.SignificantWhitespace:
					Log ("Next node: {0}", reader.Name);
					ParseSignificantWhitespace ();
					break;
			}
		}
Ejemplo n.º 16
0
		private XamlPropertySetter LookupAttachedProperty (IXamlNode reader)
		{
			Accessors accessors;
			var key = new CachedAccessorKey (reader.LocalName, Parser.ResolveType ());

			if (!XamlContext.AttachedPropertyAccessorCache.TryGetValue (key, out accessors)) {
				if (key.Type != null && key.Name != null) {
					var name = AttachedPropertyName (key.Name);
					accessors = CreateAttachedAccessors (this, key.Type, name);
				}
				XamlContext.AttachedPropertyAccessorCache.Add (key, accessors);
			}

			return XamlAttachedPropertySetter.Create (this, accessors);
		}
Ejemplo n.º 17
0
		private XamlPropertySetter LookupReflectionProperty (IXamlNode reader)
		{
			XamlPropertySetter prop = XamlReflectionPropertyForName (Type, reader.LocalName);
			if (prop != null)
				return prop;

			object target = Object;
			MutableObject obj = Object as MutableObject;
			if (obj != null)
				target = obj.Object;
			
			XamlPropertySetter evnt = XamlReflectionEventForName (target, reader.LocalName);
			if (evnt != null)
				return evnt;

			XamlPropertySetter attached = XamlImplicitAttachedPropertyForName (target, reader.LocalName);
			if (attached != null)
				return attached;

			return null;
		}
Ejemplo n.º 18
0
		public override XamlPropertySetter LookupProperty (IXamlNode reader)
		{
			if (IsNameProperty (reader))
				return new XamlNamePropertySetter (this, (DependencyObject) Object);

			XamlPropertySetter prop = LookupAttachedProperty (reader);
			if (prop != null)
				return prop;
	
			prop = LookupReflectionProperty (reader);

			return prop;
		}
Ejemplo n.º 19
0
 protected virtual void VisitOpenTag(IXamlNode node)
 {
     VisitNodeAttributes(node.Attributes);
 }
Ejemplo n.º 20
0
		public abstract XamlPropertySetter LookupProperty (IXamlNode reader);
Ejemplo n.º 21
0
		private bool IsNameProperty (IXamlNode reader)
		{
			return (reader.LocalName == "Name" && Type.IsSubclassOf (typeof (DependencyObject)));
		}