public void Remove(MeasurementLimit limit)
        {
            MeasurementLimits.Remove(limit);
            MeasurementLimit.AllMeasurementLimits.Remove(limit);

            SelectedItem = null;
        }
        public void Add()
        {
            GetError("BeginHour", "EndHour", "Limit", "City");

            if (Errors.Count < 1)
            {
                var limit = new MeasurementLimit(BeginHour, EndHour, Limit, City);

                MeasurementLimit.AllMeasurementLimits.Insert(0, limit);

                MeasurementLimits.Clear();
                foreach (var c in MeasurementLimit.AllMeasurementLimits)
                {
                    MeasurementLimits.Add(c);
                }

                SelectedItem = limit;
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                foreach (var k in Errors.Keys)
                {
                    sb.Append($"Ошибка в поле {k}: {Errors[k]};");
                }

                Errors.Clear();

                MessageBox.Show(sb.ToString());
            }
        }
        public void Find()
        {
            MeasurementLimits.Clear();

            var list =
                MeasurementLimit.AllMeasurementLimits
                .Where(m => CityForFind == null || CityForFind.Id == AllCity.Id ||
                       m.City.Id == CityForFind.Id).ToList();

            foreach (var m in list)
            {
                MeasurementLimits.Add(m);
            }

            SelectedItem = null;
        }
        /// <summary>
        /// При изменении коллекции городов, обновляю список для поиска городов
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AllCitiesOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:     // если добавление
                CitiesForFind.Insert(1, e.NewItems[0] as City);
                break;

            case NotifyCollectionChangedAction.Remove:     // если удаление
                City city = e.OldItems[0] as City;
                if (city != null)
                {
                    for (int i = MeasurementLimits.Count() - 1; i >= 0; i--)
                    {
                        if (MeasurementLimits[i].City.Id == city.Id)
                        {
                            MeasurementLimits.Remove(MeasurementLimits[i]);
                        }
                    }

                    for (int i = MeasurementLimit.AllMeasurementLimits.Count() - 1; i >= 0; i--)
                    {
                        if (MeasurementLimit.AllMeasurementLimits[i].City.Id == city.Id)
                        {
                            MeasurementLimit.AllMeasurementLimits.Remove(MeasurementLimit.AllMeasurementLimits[i]);
                        }
                    }

                    if (CitiesForFind.Contains(city))
                    {
                        CitiesForFind.Remove(city);
                    }
                }
                break;

            case NotifyCollectionChangedAction.Replace:     // если замена
                CitiesForFind.Remove(e.OldItems[0] as City);
                CitiesForFind.Insert(1, e.NewItems[0] as City);
                break;
            }
        }