public virtual int Add(UIElement element) { __UIElement _element = element; __FrameworkElement _felement = _element as __FrameworkElement; if (_felement == null) { throw new NotImplementedException(); } _felement.InternalParent = this.InternalVisualParent; InternalSprite.appendChild(_element.InternalGetDisplayObject()); InternalItems.Add(element); return(InternalItems.Count - 1); }
public virtual void Remove(UIElement element) { __UIElement _element = element; __FrameworkElement _felement = _element as __FrameworkElement; if (_felement == null) { throw new NotImplementedException(); } if (_felement.InternalParent != this.InternalVisualParent) { return; } InternalSprite.removeChild(_element.InternalGetDisplayObject()); InternalItems.Remove(element); _felement.InternalParent = null; }
public void AddChild(object value) { var e = value as UIElement; if (e == null) { throw new NotSupportedException("AddChild supports UIElement"); } this.Children.Add(e); __FrameworkElement _f = e as FrameworkElement; if (_f != null) { if (_f.InternalZIndexPending) { _f.InternalZIndexPending = false; SetZIndex(e, _f.InternalZIndex); } } }
public static void SetZIndex(UIElement element, int value) { var f = element as FrameworkElement; if (f == null) { throw new Exception("SetZIndex expects element to be FrameworkElement"); } __FrameworkElement _f = f; _f.InternalZIndex = value; if (f.Parent == null) { // the element has not been attached yet... _f.InternalZIndexPending = true; return; } var Parent = f.Parent as Panel; if (Parent == null) { throw new Exception("SetZIndex expects element.Parent to be Panel, but instead it was " + f.Parent.GetType().FullName); } // so how many guys have the zindex less or equal than our value? var zIndex = 0; var Children = (__UIElementCollection)(object)Parent.Children; var InternalItems = Children.InternalItems; for (int i = 0; i < InternalItems.Count; i++) { var Child = InternalItems[i]; if (Child != element) { var ChildFrameworkElement = Child as FrameworkElement; var InternalZIndex = 0; if (ChildFrameworkElement != null) { __FrameworkElement _ChildFrameworkElement = ChildFrameworkElement; InternalZIndex = _ChildFrameworkElement.InternalZIndex; } if (InternalZIndex <= value) { zIndex++; } } } __Panel _Parent = Parent; //// http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObjectContainer.html#setChildIndex() var c = (DisplayObjectContainer)_Parent.InternalGetDisplayObjectDirect(); c.setChildIndex(_f.InternalGetDisplayObjectDirect(), zIndex); //__UIElement _element = element; // this will only apply for 3d... // we need to emulate zindex //_element.InternalGetDisplayObject().z = value; }