[C#]
//Add NodeCollectionChanged event
diagram1.Model.EventSink.NodeCollectionChanged += new CollectionExEventHandler(EventSink_NodeCollectionChanged);
void EventSink_NodeCollectionChanged(CollectionExEventArgs evtArgs)
{
//Check whether the selected node is deleted or not
if (evtArgs.ChangeType == CollectionExChangeType.Remove)
{
if (evtArgs.Elements != null)
{
foreach (Node node in evtArgs.Elements)
DeleteChild(node);//Delete child and inner level child
}
}
}
void DeleteChild(Node parent)
{
NodeCollection nodes = new NodeCollection();
foreach (ConnectorBase link in parent.EdgesLeaving)
{
if (link.ToNode != null)
{
DeleteChild((Node)link.ToNode);
nodes.Add((Node)link.ToNode);//Add the child to the collection for deleting
}
nodes.Add(link);//Add the link from parent to the collection for deleting
}
foreach (Node node in nodes)
{
diagram1.Model.RemoveChild(node);//remove the child from model
}
}