コード例 #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);
        }
コード例 #2
0
        private void PopulateInsulinDataPoints()
        {
            foreach (var insulin in Insulins)
            {
                InsulinDataPoints.Add(insulin.GetDataPoint());
            }

            InsulinDataPoints.Sort(point => point.X);
        }
コード例 #3
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();
            }
        }
コード例 #4
0
        public void AddInsulinDatapoint(DataPoint point)
        {
            var item = InsulinDataPoints.FirstOrDefault(p => p.X > point.X);

            if (item.Equals(new DataPoint()))
            {
                InsulinDataPoints.Add(point);
            }
            else
            {
                var index = InsulinDataPoints.IndexOf(item);
                InsulinDataPoints.Insert(index, point);
            }
        }