I have ultraTree (infragistics tree) which is created at design time and it has custom class as ‘Tag’. I have List as member variable. I have two combo box. Based on the combo selection I’ll check the List’s each items ‘Tag’. If list contains, just i pick that, otherwise i create a new UltraTree and add it to List and i assign to the Tree that is created at design time.
My problem is, what i adding to the collection gets reference and all the item in the collection are overwritten by the last item. UltraTree don’t have any clone method.
I don’t found any way to clone using this control.
What can be my solution 🙁
My sample code is
// My custom class SelectedDeviceState treeState = new SelectedDeviceState( firstDevice, secondDevice); UltraTree tree = new UltraTree(); // This will clone the root node // (it will be executed only once -> Root) foreach (UltraTreeNode nod in tvwNavigation.Nodes) { UltraTreeNode tnode = nod.Clone() as UltraTreeNode; tree.Nodes.Add(tnode); } //Adding the custom class as TAG tree.Tag = treeState; // Assigned and added tvwNavigation = tree; _treeCollection.Add(tree);
You could perform a manual clone by writing a method that creates a new isntance of your type then assigns values to it from the original object.
In terms of a tree structure you would need to write a recursive clone, something like.
Maybe look at extension methods.