private void DayViewModelUpdated(object sender, PropertyChangedEventArgs propertyChangedEventArgs) { // Keep if any of it's properties update we need to update switch (propertyChangedEventArgs.PropertyName) { case nameof(Calories): case nameof(FatTotal): case nameof(Cholesterol): case nameof(Sodium): case nameof(CarbohydrateTotal): case nameof(Protein): CallUpdate(); return; case "Hour": case "Min": planViewModel.SavePlan(); return; } }
public PlanDayViewModel(string dayName, MainViewModel mainViewModel, PlanViewModel planViewModel) { this.DayName = dayName; this.mainViewModel = mainViewModel; this.planViewModel = planViewModel; Meals = new ObservableCollection <PlanMealViewModel>(); Meals.CollectionChanged += (sender, args) => { if (args.OldItems != null) { foreach (PlanMealViewModel viewModel in args.OldItems) { viewModel.PropertyChanged -= DayViewModelUpdated; } } if (args.NewItems != null) { foreach (PlanMealViewModel viewModel in args.NewItems) { viewModel.PropertyChanged += DayViewModelUpdated; } } planViewModel.SavePlan(); }; Rules = new ObservableCollection <IRule>(); Rules.Add(new FatGoalRule(this, mainViewModel.Settings)); Rules.Add(new ProteinGoalRule(this, mainViewModel.Settings)); OtherDays = new ObservableCollection <PlanDayViewModel>(); planViewModel.Days.CollectionChanged += (sender, args) => { AddDays(); }; AddDays(); }