private void UiFile_ItemRemoved(UiItem item, UiItem parentItem) { //Remove view UiItemView itemView = dataToViewDict[item]; UiTreeView.NotifyItemRemoved(itemView); itemView.DetachParent(); dataToViewDict.Remove(item); }
private void UiTreeView_ItemMoved(ITreeItem itemView, ITreeFolder oldParentView, ITreeFolder newParentView, int index) { //Data에 적용하기 UiItem item = ((UiItemView)itemView).Data; UiItem newParentItem = ((UiItemView)newParentView).Data; UiItemView oldParentItemView = (oldParentView as UiItemView); if (oldParentItemView != null) { oldParentItemView.Data.RemoveChildItem(item); } newParentItem.InsertChildItem(index, item); ItemMoved?.Invoke(item, newParentItem, oldParentItemView.Data); }
private void UiFile_ItemCreated(UiItem item, UiItem parentItem) { UiItemView itemView = new UiItemView(item); if (parentItem == null) { //Create root itemView.SetRootItem(); RootItemView = itemView; UiTreeView.ChildItemCollection.Add(itemView); UiTreeView.ManualRootFolder = itemView; } else { itemView.ParentItem = dataToViewDict[parentItem]; } //Add to collection dataToViewDict.Add(item, itemView); //Register events item.ChildInserted += Data_ChildInserted; item.ChildRemoved += Data_ChildRemoved; void Data_ChildInserted(int index, UiItem childItem) { UiItemView childItemView = dataToViewDict[childItem]; itemView.ChildItemCollection.Insert(index, childItemView); } void Data_ChildRemoved(UiItem childItem, UiItem currentItem) { UiItemView childItemView = dataToViewDict[childItem]; itemView.ChildItemCollection.Remove(childItemView); } }