Exemple #1
0
        private void InsulinOnPropertyChanged(object sender, PropertyChangedEventArgs args)
        {
            var insulin  = (InsulinItem)sender;
            var oldPoint = insulin.GetDataPoint();

            InsulinDataPoints.Remove(oldPoint);
            AddInsulinDatapoint(insulin.GenerateDataPoint());
            RaisePropertyChanged(() => InsulinDataPoints);
        }
Exemple #2
0
        private void InsulinCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
        {
            switch (args.Action)
            {
            case NotifyCollectionChangedAction.Add:

                foreach (InsulinItem insulin in args.NewItems)
                {
                    AddInsulinDatapoint(insulin.GetDataPoint());
                }
                break;

            case NotifyCollectionChangedAction.Remove:

                foreach (InsulinItem insulin in args.OldItems)
                {
                    var point = ModelToDataPoint(insulin);
                    if (!InsulinDataPoints.Remove(point))
                    {
                        throw new InvalidOperationException($"Insulin {insulin.ToString()} datapoint {point} was not removed");
                    }
                }
                break;

            case NotifyCollectionChangedAction.Replace:
                int count = args.OldItems.Count;
                for (int i = 0; i < count; i++)
                {
                    var insulin = args.OldItems[i] as InsulinItem;
                    var point   = ModelToDataPoint(insulin);
                    if (!InsulinDataPoints.Contains(point))
                    {
                        throw new ValueUnavailableException("Datapoint is missing.");
                    }

                    InsulinDataPoints.Remove(point);
                    if (args.NewItems[i] is InsulinItem newInsulin)
                    {
                        AddInsulinDatapoint(newInsulin.GetDataPoint());
                    }
                }

                break;

            case NotifyCollectionChangedAction.Move:
                break;

            case NotifyCollectionChangedAction.Reset:
                InsulinDataPoints.Clear();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }