Microsoft.Silverlight.Testing.Controls.TreeViewItem.OnItemsChanged C# (CSharp) Метод

OnItemsChanged() защищенный Метод

Makes adjustments to the T:Microsoft.Silverlight.Testing.Controls.TreeViewItem when the value of the P:Microsoft.Silverlight.Testing.Controls.ItemsControl.Items property changes.
protected OnItemsChanged ( NotifyCollectionChangedEventArgs e ) : void
e System.Collections.Specialized.NotifyCollectionChangedEventArgs /// A /// /// that contains data about the change. ///
Результат void
        protected override void OnItemsChanged(NotifyCollectionChangedEventArgs e)
        {
            if (e == null)
            {
                throw new ArgumentNullException("e");
            }

            base.OnItemsChanged(e);
            HasItems = Items.Count > 0;

            // Associate any TreeViewItems with their parent
            if (e.NewItems != null)
            {
                foreach (TreeViewItem item in e.NewItems.OfType<TreeViewItem>())
                {
                    item.ParentItemsControl = this;
                }
            }

            TreeView parentTreeView = null;
            switch (e.Action)
            {
                case NotifyCollectionChangedAction.Remove:
                case NotifyCollectionChangedAction.Reset:
                    if (!ContainsSelection)
                    {
                        break;
                    }
                    parentTreeView = ParentTreeView;
                    if (parentTreeView == null || parentTreeView.IsSelectedContainerHookedUp)
                    {
                        break;
                    }
                    ContainsSelection = false;
                    Select(true);
                    break;

                case NotifyCollectionChangedAction.Replace:
                    if (!ContainsSelection)
                    {
                        break;
                    }
                    parentTreeView = ParentTreeView;
                    if (parentTreeView == null)
                    {
                        break;
                    }
                    object selectedItem = parentTreeView.SelectedItem;
                    if (selectedItem == null || (e.OldItems != null && !object.Equals(selectedItem, e.OldItems[0])))
                    {
                        break;
                    }
                    parentTreeView.ChangeSelection(selectedItem, parentTreeView.SelectedContainer, false);
                    break;
            }

            // Remove the association with the Parent ItemsControl
            if (e.OldItems != null)
            {
                foreach (TreeViewItem item in e.OldItems.OfType<TreeViewItem>())
                {
                    item.ParentItemsControl = null;
                }
            }
        }