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); } }
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); } }