public void DeleteSelectedNode() { if (kbEntity == KBEntity.FRAME) { if (MainFrameContainer.DelFrame(frame)) { ParentalNode.Nodes.Remove(this); viewModelGraph.DrawAllKB(MainFrameContainer); } else { MessageBox.Show("Данный фрейм не может быть удален."); } } else if (kbEntity == KBEntity.SLOT_NAME) { //Это должно будет переписать в контейнере. Slot slotToDelete = ParentalNode.frame.slots[NodeIndex - 1]; if (ParentalNode.frame.DeleteSlot(slotToDelete.name)) { //Rename используется для замены старого фрейма новым, с измененными слотами MainFrameContainer.ReplaceFrame(ParentalNode.frame.name, ParentalNode.frame); Nodes.Clear(); //удаляем из памяти и узлов slotValue ParentalNode.Nodes.Remove(this); //Удаляем и сам slotName int newNodeIndex = 0; foreach (var node in ParentalNode.Nodes) { node.NodeIndex = newNodeIndex++; } viewModelGraph.DrawAllKB(MainFrameContainer); } else { MessageBox.Show("Слот не может быть удален."); } } OnPropertyChanged(); }