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;
        }
Esempio n. 3
0
        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);
                }
            }
        }
Esempio n. 4
0
        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;
        }