コード例 #1
0
        private static Type GetTargetType(XamlTypeConverter converter)
        {
            XamlElement       p      = converter.parser.CurrentElement.Parent;
            XamlObjectElement parent = p as XamlObjectElement;

            if (p == null)
            {
                throw new XamlParseException("Attempting to create a DP from an item without a target property.");
            }

            if (parent == null)
            {
                parent = p.Parent as XamlObjectElement;
            }
            if (parent == null)
            {
                throw new XamlParseException("Attempting to create a DP from an item without a target property.");
            }

            Style s = parent.Object as Style;

            if (s == null)
            {
                throw new XamlParseException("Attempting to create a DP from a non style object.");
            }

            return(s.TargetType);
        }
コード例 #2
0
        public override void AddChild(XamlElement child)
        {
            XamlPropertyElement prop = child as XamlPropertyElement;

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

            AddChildObject((XamlObjectElement)child);
        }
コード例 #3
0
        public override void AddChild(XamlElement child)
        {
            if (!set_on_add)
            {
                return;
            }

            XamlObjectElement element = child as XamlObjectElement;

            if (element == null)
            {
                return;
            }

            Setter.SetValue(element, element.Object);
        }
コード例 #4
0
ファイル: XamlElement.cs プロジェクト: kangaroo/moon
		public override void AddChild (XamlElement child)
		{
			XamlPropertyElement prop = child as XamlPropertyElement;
			if (prop != null) {
				AddChildProperty (prop);
				return;
			}

			AddChildObject ((XamlObjectElement) child);
		}
コード例 #5
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private IDictionary CurrentDictionary (XamlElement element)
		{
			IDictionary rd = null;
			XamlObjectElement obj = null;

			if (element == null || element.Parent == null)
				return null;

			XamlPropertyElement prop = element.Parent as XamlPropertyElement;
			if (prop == null) {
				//
				// We could be in a <ResourceDictionary> tag, so we get added via ContentProperty
				//
				obj = element.Parent as XamlObjectElement;
				rd = obj.Object as IDictionary;
				if (rd != null)
					return rd;
				return null;
			}

			//
			// We aren't even in a <Something.Resources> element
			//
			if (!(typeof (IDictionary).IsAssignableFrom (prop.Type)))
				return null;

			//
			// We need to be in a resource dictionary element, and we need that element to have a
			// valid parent container.
			//
			obj = prop.Parent as XamlObjectElement;
			if (obj == null)
				return null;

			FrameworkElement fe = obj.Object as FrameworkElement;
			rd = fe.Resources;
			return rd;
		}
コード例 #6
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void ParentPropertyElement (XamlElement element, XamlPropertyElement prop)
		{
			XamlObjectElement obj = (XamlObjectElement) element;
		}
コード例 #7
0
 public abstract void AddChild(XamlElement child);
コード例 #8
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void PushCurrentElement (XamlElement element)
		{
			if (element == null) {
				current_element = null;
				return;
			}

			if (current_element != null) {
				current_element.Children.Add (element);
				element.Parent = current_element;
			}

			if (top_element == null)
				top_element = element;

			current_element = element;
		}
コード例 #9
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void InitTopElement (XamlElement element)
		{
			XamlObjectElement obj = element as XamlObjectElement;

			if (obj != null && typeof (DependencyObject).IsAssignableFrom (obj.Type)) {
				DependencyObject dob = (DependencyObject) obj.Object;
				NameScope.SetNameScope (dob, NameScope);
			}
		}
コード例 #10
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private void PopCurrentElement ()
		{
			Log ("\t\tPopCurrentElement old:{0} new:{1}",
					current_element != null ? current_element.Name : "none",
					current_element.Parent != null ? current_element.Parent.Name : "none");

			current_element = current_element.Parent;
		}
コード例 #11
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void ParseXmlDirective (XamlElement element)
		{
			if (reader.LocalName == "space") {
				// Do nothing XmlReader covers this for us
			}
		}
コード例 #12
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private void OnElementBegin (XamlElement element)
		{
			Log ("\t\tOnElementBegin {0}", element.Name);

			InitializeElement (element);
			element.RaiseElementBegin ();

			if (top_element == null)
				InitTopElement (element);

			if (current_element is XamlObjectElement) {
				if (element is XamlObjectElement)
					current_element.ContentSet = true;
				else
					current_element.PropertiesSet = true;
			}

			PushCurrentElement (element);
		}
コード例 #13
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private void PushCurrentElement (XamlElement element)
		{
			Log ("\t\tPushCurrentElement old:{0} new:{1}",
					CurrentElement != null ? CurrentElement.Name : "none",
					element != null ? element.Name : "none");

			if (element == null) {
				current_element = null;
				return;
			}

			if (current_element != null) {
				current_element.Children.Add (element);
				element.Parent = current_element;
			}

			if (top_element == null)
				top_element = element;

			current_element = element;
		}
コード例 #14
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private void ParseXmlDirective (XamlElement element, XamlAttribute ai)
		{
			if (ai.LocalName == "space") {
				// Do nothing XmlReader covers this for us
			}
		}
コード例 #15
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private IDictionary CurrentDictionary (XamlElement element)
		{
			XamlObjectElement obj = null;

			if (element == null || element.Parent == null)
				return null;

			XamlElement walk = element.Parent;

			XamlPropertyElement prop = null;
			while (walk != null) {
				prop = walk as XamlPropertyElement;
				if (prop == null) {
					obj = walk as XamlObjectElement;
					IDictionary rd = obj.Object as IDictionary;
					if (rd != null)
						return rd;
					walk = walk.Parent;
					continue;
				}

				//
				// We are in a different property
				//
				if (!(typeof (IDictionary).IsAssignableFrom (prop.Type))) {
					walk = walk.Parent;
					continue;
				}

				break;
			}

			if (prop == null)
				return null;

			obj = prop.Parent as XamlObjectElement;
			if (obj == null)
				return null;

			FrameworkElement fe = obj.Object as FrameworkElement;
			if (fe != null)
				return fe.Resources;

			Application app = obj.Object as Application;
			if (app != null)
				return app.Resources;

			return null;
		}
コード例 #16
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		internal object LookupNamedItem (XamlElement target, string name)
		{
			object o;
			XamlElement lookup = target;

			
			while (lookup != null) {
				XamlObjectElement obj = lookup as XamlObjectElement;
				if (obj != null) {
					FrameworkElement fe = obj.Object as FrameworkElement;
					if (fe != null) {
						o = fe.Resources [name];
						if (o != null)
							return o;
					}
					ResourceDictionary rd = obj.Object as ResourceDictionary;
					if (rd != null) {
						o = rd [name];
						if (o != null)
							return o;
					}
				}
				lookup = lookup.Parent;
			}

			o = Context.LookupNamedItem (name);
			if (o != null)
				return o;

			o = Application.Current.Resources [name];
		
			return o;
		}
コード例 #17
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void ParseMcAttribute (XamlElement element)
		{
			if (reader.LocalName == "Ignorable") {
				IgnorableXmlns.Add (reader.Value);
				return;
			}

			throw ParseException ("Undeclared prefix");
		}
コード例 #18
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private void InitTopElement (XamlElement element)
		{
			XamlObjectElement obj = element as XamlObjectElement;

			if (obj != null) {
				if (typeof (DependencyObject).IsAssignableFrom (obj.Type)) {
					object target = obj.Object;
					if (target is MutableObject)
						target = ((MutableObject)target).Object;
					DependencyObject dob = (DependencyObject) target;
					NameScope.SetNameScope (dob, NameScope);
				}
			}
		}
コード例 #19
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void ParseXmlnsMapping (XamlElement element)
		{
			if (reader.Prefix == String.Empty) {
				DefaultXmlns = reader.Value;
				return;
			}

			Xmlns [reader.Name] = reader.Value;
		}
コード例 #20
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private void ParentElement (XamlElement element, XamlElement parent)
		{
			Log ("AddChild: {0} {1}", parent.Name, element.Name);

			parent.AddChild (element);
		}
コード例 #21
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void OnElementBegin (XamlElement element)
		{
			InitializeElement (element);
			element.RaiseElementBegin ();

			if (top_element == null)
				InitTopElement (element);

			PushCurrentElement (element);
		}
コード例 #22
0
ファイル: XamlParser.cs プロジェクト: dfr0/moon
		private void EndInitializeElement (XamlElement element)
		{
			XamlObjectElement obj = element as XamlObjectElement;
			if (obj == null)
				return;

			ISupportInitialize init = obj.Object as ISupportInitialize;
			if (init == null)
				return;

			try {
				init.EndInit ();
			} catch (Exception e) {
				Console.WriteLine ("Exception in initializer.");
				Console.WriteLine (e);
			}
		}
コード例 #23
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void PopCurrentElement ()
		{
			current_element = current_element.Parent;
		}
コード例 #24
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		internal void RegisterKeyItem (XamlObjectElement element, XamlElement target, string key)
		{
			IDictionary rd = CurrentDictionary (element);
			if (rd == null)
				throw ParseException ("Attempt to use x:Key outside of an IDictionary.");

			element.X_Key = key;
		}
コード例 #25
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void ParentElement (XamlElement element, XamlElement parent)
		{
			parent.AddChild (element);
		}
コード例 #26
0
ファイル: XamlElement.cs プロジェクト: kangaroo/moon
		public abstract void AddChild (XamlElement child);
コード例 #27
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private void EndInitializeElement (XamlElement element)
		{
			XamlObjectElement obj = element as XamlObjectElement;
			if (obj == null)
				return;

			ISupportInitialize init = obj.Object as ISupportInitialize;
			if (init == null)
				return;
			init.EndInit ();
		}
コード例 #28
0
ファイル: XamlParser.cs プロジェクト: snorp/moon
		private void ParseMcAttribute (XamlElement element)
		{
			if (reader.LocalName == "Ignorable")
				// we've already ignored namespaces in IgnoreIgnorableXmlns
				return;

			throw ParseException ("Undeclared prefix");
		}
コード例 #29
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		internal FrameworkTemplate GetParentTemplate (XamlElement element)
		{
			XamlElement parent = element.Parent;

			while (parent != null && !IsTemplate (parent))
				parent = parent.Parent;

			if (parent != null)
				return ((XamlObjectElement) parent).Object as FrameworkTemplate;

			if (Context == null)
				return null;

			return Context.Template;
		}
コード例 #30
0
ファイル: XamlElement.cs プロジェクト: kangaroo/moon
		public override void AddChild (XamlElement child)
		{
			if (!set_on_add)
				return;

			XamlObjectElement element = child as XamlObjectElement;
			if (element == null)
				return;

			Setter.SetValue (element, element.Object);
		}
コード例 #31
0
ファイル: XamlParser.cs プロジェクト: shana/moon
		private bool IsTemplate (XamlElement element)
		{
			XamlObjectElement obj = element as XamlObjectElement;
			if (obj == null)
				return false;
			return typeof (FrameworkTemplate).IsAssignableFrom (obj.Type);
		}
コード例 #32
0
ファイル: XamlElement.cs プロジェクト: shana/moon
		public override void AddChild (XamlElement child)
		{

		}