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); }
public void Visit(IXamlNode node) { if (null == node) { throw new ArgumentNullException(nameof(node)); } VisitNode(node); }
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)); }
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); }
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('>'); }
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); }
private bool IsNameProperty(IXamlNode reader) { return(reader.LocalName == "Name" && Type.IsSubclassOf(typeof(DependencyObject))); }
public override XamlPropertySetter LookupProperty(IXamlNode reader) { throw Parser.ParseException("Property element {0} found inside property element {1}.", reader.LocalName, Name); }
public abstract XamlPropertySetter LookupProperty(IXamlNode reader);
protected virtual void VisitCloseTag(IXamlNode node) { }
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; }
protected virtual void VisitNode(IXamlNode node) { VisitOpenTag(node); VisitNodeChildren(node.Children); VisitCloseTag(node); }
public override XamlPropertySetter LookupProperty (IXamlNode reader) { throw Parser.ParseException ("Property element {0} found inside property element {1}.", reader.LocalName, Name); }
void XamlNode_OnAttribute (XamlNode node, XamlAttribute ai) { if (!(CurrentElement is XamlObjectElement)) return; if (IsStaticResourceElement ()) return; currentNode = ai; ParseAttribute (CurrentElement as XamlObjectElement, ai); currentNode = node; }
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; } }
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); }
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; }
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; }
protected virtual void VisitOpenTag(IXamlNode node) { VisitNodeAttributes(node.Attributes); }
public abstract XamlPropertySetter LookupProperty (IXamlNode reader);
private bool IsNameProperty (IXamlNode reader) { return (reader.LocalName == "Name" && Type.IsSubclassOf (typeof (DependencyObject))); }