protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs args) { base.OnCollectionChanged(args); if (this.owner != null) { RadTreeViewElement treeViewElement = this.owner.TreeViewElement; if (treeViewElement != null) { if (args.Action == NotifyCollectionChangedAction.Add) { RadTreeNode node = (RadTreeNode)args.NewItems[0]; treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemAdded, node); treeViewElement.OnNodeAdded(new RadTreeViewEventArgs(node)); } else if (args.Action == NotifyCollectionChangedAction.Remove) { RadTreeNode node = (RadTreeNode)args.NewItems[0]; treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemRemoved, node); treeViewElement.OnNodeRemoved(new RadTreeViewEventArgs(node)); } else if (args.Action == NotifyCollectionChangedAction.Move) { RadTreeNode node = (RadTreeNode)args.NewItems[0]; treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemMoved, node); } else if (args.Action == NotifyCollectionChangedAction.Reset) { treeViewElement.Update(RadTreeViewElement.UpdateActions.Reset); } } } }
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs args) { base.OnCollectionChanged(args); if (this.Suspended || this.owner == null) return; RadTreeViewElement treeViewElement = this.owner.TreeViewElement; if (treeViewElement == null) return; if (!treeViewElement.IsSuspended) { this.owner.InvalidateOnState(); this.owner.UpdateParentCheckState(); } if (args.Action == NotifyCollectionChangedAction.Add) { RadTreeNode newItem = (RadTreeNode) args.NewItems[0]; treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemAdded, newItem); treeViewElement.OnNodeAdded(new RadTreeViewEventArgs(newItem)); } else if (args.Action == NotifyCollectionChangedAction.Remove) { RadTreeNode newItem = (RadTreeNode) args.NewItems[0]; treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemRemoved, newItem); treeViewElement.OnNodeRemoved(new RadTreeViewEventArgs(newItem)); } else if (args.Action == NotifyCollectionChangedAction.Move) { RadTreeNode newItem = (RadTreeNode) args.NewItems[0]; treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemMoved, newItem); } else { if (args.Action != NotifyCollectionChangedAction.Reset) return; RadTreeViewElement.UpdateActions updateAction = this.owner is RadTreeViewElement.RootTreeNode ? RadTreeViewElement.UpdateActions.Reset : RadTreeViewElement.UpdateActions.Resume; treeViewElement.Update(updateAction); } }