/// <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;
                    }
                }
            }
        }
Example #2
0
 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;
         }
     }
 }