/// <summary> /// Add data item as last child of parent /// </summary> /// <param name="parent">parent data item</param> /// <param name="item">data item to add</param> public void AddChild(object parent, object item) { if (parent == null) { Add(item); } else { VirtualizingTreeViewItem parentContainer = (VirtualizingTreeViewItem)GetItemContainer(parent); if (parentContainer == null) { return; } int index = -1; if (parentContainer.IsExpanded) { if (parentContainer.HasChildren) { TreeViewItemContainerData lastDescendant = parentContainer.LastDescendant(); index = IndexOf(lastDescendant.Item) + 1; } else { index = IndexOf(parentContainer.Item) + 1; } } else { parentContainer.CanExpand = true; } if (index > -1) { TreeViewItemContainerData addedItemData = (TreeViewItemContainerData)Insert(index, item); VirtualizingTreeViewItem addedTreeViewItem = (VirtualizingTreeViewItem)GetItemContainer(item); if (addedTreeViewItem != null) { addedTreeViewItem.Parent = parentContainer.TreeViewItemData; } else { addedItemData.Parent = parentContainer.TreeViewItemData; } } } }
public void AddChild(object parent, object item) { if (parent == null) { this.Add(item); } else { VirtualizingTreeViewItem itemContainer1 = (VirtualizingTreeViewItem)this.GetItemContainer(parent); int index = -1; TreeViewItemContainerData itemContainerData1; if (Object.op_Equality((Object)itemContainer1, (Object)null)) { itemContainerData1 = (TreeViewItemContainerData)this.GetItemContainerData(parent); if (itemContainerData1 == null) { Debug.LogWarning((object)"Lost parent data"); return; } if (itemContainerData1.IsExpanded) { index = !itemContainerData1.HasChildren(this) ? this.IndexOf(itemContainerData1.Item) + 1 : this.IndexOf(itemContainerData1.LastDescendant(this).Item) + 1; } else { itemContainerData1.CanExpand = true; } } else { if (itemContainer1.IsExpanded) { index = !itemContainer1.HasChildren ? this.IndexOf(itemContainer1.Item) + 1 : this.IndexOf(itemContainer1.LastDescendant().Item) + 1; } else { itemContainer1.CanExpand = true; } itemContainerData1 = itemContainer1.TreeViewItemData; } if (index <= -1) { return; } TreeViewItemContainerData itemContainerData2 = (TreeViewItemContainerData)this.Insert(index, item); VirtualizingTreeViewItem itemContainer2 = (VirtualizingTreeViewItem)this.GetItemContainer(item); if (Object.op_Inequality((Object)itemContainer2, (Object)null)) { itemContainer2.Parent = itemContainerData1; } else { itemContainerData2.Parent = itemContainerData1; } } }