public StreetsViewModel() { MOYABAZAEntities model = App.MOYABAZA; model.Улицы.Load(); Streets = CollectionViewSource.GetDefaultView(model.Улицы.Local); AddModeCommand = new RelayCommand( (param) => { SelectedStreet = null; EditAllowed = true; //model.Города.Local.Add(city); }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.StreetThesaurusName && uo.W == 1) != 0); ChangeModeCommand = new RelayCommand( (param) => { EditAllowed ^= true; }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.StreetThesaurusName && uo.E == 1) != 0 && param != null); SaveCommand = new RelayCommand( (param) => { if (SelectedStreet != null) { if (StreetTextBox != String.Empty) //Изменение существующего города { try { SelectedStreet.Название = StreetTextBox; model.SaveChanges(); Streets.Refresh(); EditAllowed = false; } catch (Exception e) { MessageBox.Show($"Такая улица уже существует! \n {e.Message}"); } } else { MessageBox.Show("Название не может быть пустым!"); StreetTextBox = SelectedStreet.Название; } } else { if (StreetTextBox != String.Empty) //Добавление нового города { Улицы street = new Улицы(); try { street.Название = StreetTextBox; model.Улицы.Local.Add(street); model.SaveChanges(); EditAllowed = false; StreetTextBox = String.Empty; } catch (DbUpdateException e) { model.Улицы.Local.Remove(street); MessageBox.Show($"Такая улица уже существует! \n {e.Message}"); } } else { MessageBox.Show("Название не может быть пустым!"); } } }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.StreetThesaurusName && (uo.E == 1 || uo.R == 1)) != 0 && Convert.ToBoolean(param) == true); DeleteCommand = new RelayCommand( (param) => { if (MessageBox.Show("Уверен?", "Назад дороги не будет", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes) { var deletedStreet = _selectedStreet; try { if (deletedStreet.Читатели.Count != 0) { throw new DbUpdateException("В улице есть читатели!!!!"); } model.Улицы.Local.Remove(deletedStreet); model.SaveChanges(); } catch (DbUpdateException ex) { model.Улицы.Local.Add(deletedStreet); Streets.MoveCurrentTo(deletedStreet); Streets.Refresh(); MessageBox.Show($"Произошла ошибка при удалении данных: {Environment.CommandLine}{ex.Message}", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); } } }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.StreetThesaurusName && uo.D == 1) != 0 && param != null); Streets.Filter = FilterFunction; }