private async void CloseTab(MyTabItem tabItem) { if (_dataProvider.TabsRepository.TabItems.Count == 1) { await _dataProvider.DialogsManager.ShowMessage("Нельзя удалить единственную вкладку."); return; } if ( !await _dataProvider.DialogsManager.ShowRequest("Удалить выбранную вкладку и все связанные с ней элементы?")) { return; } var assignedObjectsCount = _dataProvider.ObjectsRepository.ViewModels.Count(t => t.Properties.TabId == tabItem.Id); if (assignedObjectsCount != 0) { if (!await _dataProvider.DialogsManager.ShowRequest( $"Выбранная вкладка содержит объекты ({assignedObjectsCount}).{Environment.NewLine}Продолжить?")) { return; } } _dataProvider.TabsRepository.RemoveItem(tabItem); var removedObjects = _dataProvider.ObjectsRepository.ViewModels.Where(t => t.Properties.TabId == tabItem.Id).ToList(); removedObjects.ForEach(t => _dataProvider.ObjectsRepository.Remove(t.Properties.Id)); }
public void RemoveItem(MyTabItem tabItem) { var selector = TabItems.FirstOrDefault(t => t.Id == tabItem.Id); if (selector == null) { return; } TabItems.Remove(selector); }