Exemplo n.º 1
0
        //--------------------------------------------------------------
        #region Methods
        //--------------------------------------------------------------

        private void OnChildrenChanged(object sender, CollectionChangedEventArgs <UIControl> eventArgs)
        {
            // Children are also stuffed into the VisualChildren. Both collections should use
            // the same order.

            // Handle moved items.
            if (eventArgs.Action == CollectionChangedAction.Move)
            {
                // Move visual children too.
                VisualChildren.Move(eventArgs.OldItemsIndex, eventArgs.NewItemsIndex);
                return;
            }

            // Handle removed items.
            foreach (var oldItem in eventArgs.OldItems)
            {
                VisualChildren.Remove(oldItem);
            }

            // Handle new items.
            int newItemsIndex = eventArgs.NewItemsIndex;

            if (newItemsIndex == -1)
            {
                // Append items.
                foreach (var newItem in eventArgs.NewItems)
                {
                    VisualChildren.Add(newItem);
                }
            }
            else
            {
                // Make sure that the same order is used in both collections.
                foreach (var newItem in eventArgs.NewItems)
                {
                    VisualChildren.Insert(newItemsIndex, newItem);
                    newItemsIndex++;
                }
            }

            InvalidateMeasure();
        }