Ejemplo n.º 1
0
            /// <summary>
            /// Called when [item adding].
            /// </summary>
            /// <param name="item">The item.</param>
            /// <exception cref="System.ArgumentNullException">item;添加的元素不能为 null。</exception>
            /// <exception cref="System.InvalidProgramException">该节点在本集合中只能出现一次。</exception>
            private void OnItemAdding(Entity item)
            {
                if (item == null)
                {
                    throw new ArgumentNullException("item", "添加的元素不能为 null。");
                }

                if (item._treeParent == _owner)
                {
                    //如果节点不在删除列表中,则说明它已经在本集合的 _nodes 中了。
                    if (_deleted == null || !_deleted.Remove(item))
                    {
                        throw new InvalidProgramException(string.Format(
                                                              "节点 {0} 在父节点的树子集合中只能出现一次。", item
                                                              ));
                    }
                }

                item.RemoveFromParentList(false);

                if (!_owner.IsDeleted && item.IsDeleted)
                {
                    (item as ITreeComponent).EachNode(e =>
                    {
                        (e as IEntityWithStatus).RevertDeletedStatus();
                        return(false);
                    });
                }
            }