public void Save_Clicked(object sender, RoutedEventArgs e) { var firstLineValidation = new List <string>(); if (Validation.GetHasError(Year)) { firstLineValidation.Add("Year is not valid"); } foreach (var item in ListViewPricingPeriods.Items) { var pricingPeriodTitle = " at Pricing Period at index " + ListViewPricingPeriods.Items.IndexOf(item); var listViewItem = ListViewPricingPeriods.ItemContainerGenerator.ContainerFromItem(item) as ListViewItem; //if(Validation.GetHasError(ControlFinder.FindChild<TextBox>(listViewItem, "StartDay"))) firstLineValidation.Add("Incorrect Start Day" + pricingPeriodTitle); //if (Validation.GetHasError(ControlFinder.FindChild<TextBox>(listViewItem, "EndDay"))) firstLineValidation.Add("Incorrect End Day" + pricingPeriodTitle); //if (Validation.GetHasError(ControlFinder.FindChild<TextBox>(listViewItem, "FridayToFridayRate"))) firstLineValidation.Add("Incorrect Friday to Friday rate" + pricingPeriodTitle); //if (Validation.GetHasError(ControlFinder.FindChild<TextBox>(listViewItem, "FridayToMondayRate"))) firstLineValidation.Add("Incorrect Friday to Monday rate" + pricingPeriodTitle); //if (Validation.GetHasError(ControlFinder.FindChild<TextBox>(listViewItem, "MondayToFridayRate"))) firstLineValidation.Add("Incorrect Monday to Friday rate" + pricingPeriodTitle); if (Validation.GetHasError(listViewItem.FindChild <TextBox>("StartDay"))) { firstLineValidation.Add("Incorrect Start Day" + pricingPeriodTitle); } if (Validation.GetHasError(listViewItem.FindChild <TextBox>("EndDay"))) { firstLineValidation.Add("Incorrect End Day" + pricingPeriodTitle); } if (Validation.GetHasError(listViewItem.FindChild <TextBox>("FridayToFridayRate"))) { firstLineValidation.Add("Incorrect Friday to Friday rate" + pricingPeriodTitle); } if (Validation.GetHasError(listViewItem.FindChild <TextBox>("FridayToMondayRate"))) { firstLineValidation.Add("Incorrect Friday to Monday rate" + pricingPeriodTitle); } if (Validation.GetHasError(listViewItem.FindChild <TextBox>("MondayToFridayRate"))) { firstLineValidation.Add("Incorrect Monday to Friday rate" + pricingPeriodTitle); } } if (firstLineValidation.Any()) { var validationDialog = new ValidationDialog(firstLineValidation); validationDialog.Owner = Window.GetWindow(this); var dialogResult = validationDialog.ShowDialog(); return; } var viewModel = DataContext as EditViewModel; var request = new EditRequest(); request.Id = viewModel.Id; request.Name = viewModel.Name; request.Description = viewModel.Description; request.Overview = viewModel.Overview; request.Details = viewModel.Details; request.DriveSide = viewModel.DriveSide; request.Berth = viewModel.Berth; request.Year = viewModel.Year; request.PricingPeriods = new List <EditPricingPeriodRequest>(); foreach (var editPricingPeriodViewModel in viewModel.PricingPeriods) { var editPricingPeriodRequest = new EditPricingPeriodRequest(); editPricingPeriodRequest.Id = editPricingPeriodViewModel.Id; editPricingPeriodRequest.StartMonth = editPricingPeriodViewModel.StartMonth; editPricingPeriodRequest.StartDay = editPricingPeriodViewModel.StartDay; editPricingPeriodRequest.EndMonth = editPricingPeriodViewModel.EndMonth; editPricingPeriodRequest.EndDay = editPricingPeriodViewModel.EndDay; editPricingPeriodRequest.FridayToFridayRate = editPricingPeriodViewModel.FridayToFridayRate; editPricingPeriodRequest.FridayToMondayRate = editPricingPeriodViewModel.FridayToMondayRate; editPricingPeriodRequest.MondayToFridayRate = editPricingPeriodViewModel.MondayToFridayRate; request.PricingPeriods.Add(editPricingPeriodRequest); } ValidationMessageCollection validationMessages; using (_contextProvider) { validationMessages = _busService.ValidateEdit(request); } if (validationMessages.Any()) { var validationDialog = new ValidationDialog(validationMessages.Select(x => x.Text)); validationDialog.Owner = Window.GetWindow(this); var dialogResult = validationDialog.ShowDialog(); return; } using (var transactionScope = new TransactionScope()) using (_contextProvider) { _busService.Edit(request); _contextProvider.SaveChanges(); transactionScope.Complete(); } MessageBox.Show(viewModel.Name + " has been updated."); }