Example #1
0
 /// <summary>
 /// Internal constructor, used by XamlParser.
 /// </summary>
 internal XamlDocument(XmlDocument xmlDoc, XamlParserSettings settings)
 {
     this._xmlDoc = xmlDoc;
     this._typeFinder = settings.TypeFinder;
     this._serviceProvider = settings.ServiceProvider;
     this._currentProjectAssemblyName = settings.CurrentProjectAssemblyName;
 }
Example #2
0
		/// <summary>
		/// Internal constructor, used by XamlParser.
		/// </summary>
		internal XamlDocument(XmlDocument xmlDoc, XamlParserSettings settings)
		{
			this._xmlDoc = xmlDoc;
			this._typeFinder = settings.TypeFinder;
			this._serviceProvider = settings.ServiceProvider;
		}
Example #3
0
		static bool IsElementChildACollectionForProperty(XamlTypeFinder typeFinder, XmlElement element, XamlPropertyInfo propertyInfo)
		{
			var nodes = element.ChildNodes.Cast<XmlNode>().Where(x => !(x is XmlWhitespace)).ToList();
			return nodes.Count == 1 && propertyInfo.ReturnType.IsAssignableFrom(FindType(typeFinder, nodes[0].NamespaceURI, nodes[0].LocalName));
		}
Example #4
0
		internal static XamlPropertyInfo GetPropertyInfo(XamlTypeFinder typeFinder, object elementInstance, Type elementType, string xmlNamespace, string localName, bool tryFindAllProperties = false)
		{
			string typeName, propertyName;
			SplitQualifiedIdentifier(localName, out typeName, out propertyName);
			Type propertyType = FindType(typeFinder, xmlNamespace, typeName);

			//Tries to Find All properties, even if they are not attached (For Setters, Bindings, ...)
			if (tryFindAllProperties)
			{
				XamlPropertyInfo propertyInfo = null;
				try
				{
					propertyInfo = FindProperty(elementInstance, propertyType, propertyName);
				}
				catch (Exception)
				{ }
				if (propertyInfo != null)
					return propertyInfo;
			}

			if (elementType.IsAssignableFrom(propertyType) || propertyType.IsAssignableFrom(elementType)) {
				return FindProperty(elementInstance, propertyType, propertyName);
			} else {
				// This is an attached property
				return FindAttachedProperty(propertyType, propertyName);
			}
		}
Example #5
0
		static XamlPropertyInfo GetPropertyInfo(object elementInstance, Type elementType, XmlAttribute attribute, XamlTypeFinder typeFinder)
		{
			var ret = GetXamlSpecialProperty(attribute);
			if (ret != null)
				return ret;
			if (attribute.LocalName.Contains(".")) {
				return GetPropertyInfo(typeFinder, elementInstance, elementType, GetAttributeNamespace(attribute), attribute.LocalName);
			} else {
				return FindProperty(elementInstance, elementType, attribute.LocalName);
			}
		}
Example #6
0
		static Type FindType(XamlTypeFinder typeFinder, string namespaceUri, string localName)
		{
			Type elementType = typeFinder.GetType(namespaceUri, localName);
			if (elementType == null)
				elementType = typeFinder.GetType(namespaceUri, localName+"Extension");
			if (elementType == null)
				throw new XamlLoadException("Cannot find type " + localName + " in " + namespaceUri);
			return elementType;
		}
Example #7
0
		internal static XamlPropertyInfo GetPropertyInfo(XamlTypeFinder typeFinder, object elementInstance, Type elementType, string xmlNamespace, string localName)
		{
			string typeName, propertyName;
			SplitQualifiedIdentifier(localName, out typeName, out propertyName);
			Type propertyType = FindType(typeFinder, xmlNamespace, typeName);
			if (elementType == propertyType || propertyType.IsAssignableFrom(elementType)) {
				return FindProperty(elementInstance, propertyType, propertyName);
			} else {
				// This is an attached property
				return FindAttachedProperty(propertyType, propertyName);
			}
		}
Example #8
0
 public void FixtureSetUp()
 {
     typeFinder = XamlTypeFinder.CreateWpfTypeFinder();
 }
Example #9
0
 static KordueneTypeFinder()
 {
     Instance = new KordueneTypeFinder();
     Instance.ImportFrom(XamlTypeFinder.CreateWpfTypeFinder());
     Current.Instance.BuildFinished += Instance_BuildFinished;
 }
Example #10
0
		static bool IsElementChildACollectionForProperty(XamlTypeFinder typeFinder, XmlElement element, XamlPropertyInfo propertyInfo)
		{
			return element.ChildNodes.Count == 1 && propertyInfo.ReturnType.IsAssignableFrom(FindType(typeFinder, element.FirstChild.NamespaceURI, element.FirstChild.LocalName));
		}
		public void FixtureSetUp()
		{
			typeFinder = XamlTypeFinder.CreateWpfTypeFinder();
		}