private ObservableCollection <OrgElementViewModel> GetChildren() { children = new ObservableCollection <OrgElementViewModel>(); //get the list of children from Model foreach (Node i in OrgChartManager.Instance().GetChildren(this.ID)) { children.Add(new OrgElementViewModel(i, this)); } return(children); }
/// <summary> /// Remove this OrgElementViewModel from the /// OrgTreeViewModel /// </summary> /// <param name="i"></param> void IDragable.Remove(object data) { //if moving within organization we don't want to //delete the data from the tree OrgElementViewModel org = data as OrgElementViewModel; if (org != null) { //if not a move within organization(moving outside of orgchart) if (!org.isMoveWithinOrganization) { OrgChartManager.Instance().RemoveNode(this.ID); } } //refresh the view of parent's children if (parent != null) { parent.Children = parent.GetChildren(); } }
/// <summary> /// Drop data into this OrgElementViewModel /// </summary> void IDropable.Drop(object data, int index) { //if moving within organization, reassign the children to the //level above first OrgElementViewModel org = data as OrgElementViewModel; ElementViewModel elem = data as ElementViewModel; if (org != null) { org.isMoveWithinOrganization = true; if (org.ID == this.ID) //if dragged and dropped yourself, don't need to do anything { return; } OrgChartManager.Instance().Reassign(new Node { Id = org.ID }, org.parent.ID); OrgChartManager.Instance().AddNode(new Node { Id = org.ID, ParentId = this.ID, FirstName = org.FirstName, LastName = org.LastName }, this.ID); } else if (elem != null) { OrgChartManager.Instance().AddNode(new Node { Id = elem.ID, ParentId = this.ID, FirstName = elem.FirstName, LastName = elem.LastName }, this.ID); } this.Children = this.GetChildren(); //refresh view }