private void DeleteHeirarchicalRow(IEditorConfigurationItemViewModel configurationItemViewModel) { if (configurationItemViewModel.ChildStructItemViewModels != null) { if (configurationItemViewModel.ChildStructItemViewModels is IEnumerable) { List <IConfigurationItemViewModel> itemsToDelete = new List <IConfigurationItemViewModel>(); itemsToDelete.AddRange(configurationItemViewModel.ChildStructItemViewModels); foreach (IConfigurationItemViewModel item in itemsToDelete) { if (item is IEditorConfigurationItemViewModel) { DeleteHeirarchicalRow(item as IEditorConfigurationItemViewModel); } } } } if (configurationItemViewModel is IDeletable) { //проверка на корневой элемент (у него нет родителя и он состоит в списке корневых элементов) if (configurationItemViewModel.Parent == null) { if (RootConfigurationItemViewModels.Contains(configurationItemViewModel)) { RootConfigurationItemViewModels.Remove(configurationItemViewModel); // this._deviceConfiguration.RootConfigurationItemList.Remove(configurationItemViewModel.Model as IConfigurationItem); } } else { ((IDeletable)configurationItemViewModel).DeleteElement(); } } AllRows.Remove(configurationItemViewModel); }