Beispiel #1
0
        protected override void UpdateElement(ZStack oldStack, Context oldContext)
        {
            var newCount = Element.Children.Count;

            if (children.Count < newCount)
            {
                Context.InvalidateLayout();
                var previous = children.LastOrDefault();
                for (int i = children.Count; i < newCount; ++i)
                {
                    var child = new PseudoLayer(this, Context, Element.Children[i].Child, previous);
                    children.Add(child);
                    previous = child;
                }
            }
            else if (children.Count > newCount)
            {
                Context.InvalidateLayout();
                for (int i = newCount; i < children.Count; ++i)
                {
                    children[i].Dispose();
                }
                children.RemoveRange(newCount, children.Count - newCount);
            }

            for (int i = 0; i < newCount; ++i)
            {
                children[i].UpdateElement(Element.Children[i].Child, Context);
            }
        }
Beispiel #2
0
        public ZStackNode(Node?parent, Context context, ZStack stack) : base(parent, context, stack)
        {
            var children = stack.Children;

            this.children = new List <PseudoLayer>(children.Count);

            PseudoLayer?previous = null;

            foreach (var expand in children)
            {
                var child = new PseudoLayer(this, context, expand.Child, previous);
                previous = child;
                this.children.Add(child);
            }
        }