private void PopulatePropertyValues(CalibrationComponent calibrationComponent)
        {
            int rowCount = 2;
            const int rowHeight = 25;

            var calibrationComponentProperies = calibrationComponent.CalibrationComponentType.CalibrationComponentTypeProperties.OrderBy(x => x.Ordinal);

            foreach (var calibrationComponentProperty in calibrationComponentProperies)
            {
                PropertiesGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(rowHeight - 2) });

                var propertyValue = GetCalibrationComponentPropertyValue(calibrationComponent, calibrationComponentProperty);

                if (calibrationComponentProperty.CalibrationEngineeringUnit == null)
                {
                    calibrationComponentProperty.CalibrationEngineeringUnit = new CalibrationEngineeringUnit
                                                                       {
                                                                           Id = calibrationComponentProperty.CalibrationEngineeringUnitId,
                                                                           Name = (from x in mCalibrationEngineeringUnits
                                                                                   where x.Id == calibrationComponentProperty.CalibrationEngineeringUnitId
                                                                                   select x.Name).FirstOrDefault()
                                                                       };
                }

                BindLabel(calibrationComponentProperty, "CalibrationProperty.Name", rowCount, 0, true);
                BindLabel(calibrationComponentProperty, "CalibrationEngineeringUnit.Name", rowCount, 1, false);

                CalibrationComponentPropertyWrapViewModel ccpwvm = new CalibrationComponentPropertyWrapViewModel(propertyValue,
                                                                  calibrationComponentProperty.CalibrationProperty.Type);

                CalibrationComponentPropertyWrapViewModelList.Add(ccpwvm);

                BindTextBox(ccpwvm, "AsFound", rowCount, 2, calibrationComponentProperty.CalibrationProperty.EnableAsFound);
                BindTextBox(ccpwvm, "AsLeft", rowCount, 4, true);

                rowCount++;
            }

            LastInspectedTextBox.ResetOriginalValue();
            LastInspectedTextBox.ControlChanged += ControlChanged;

            NextInspectionTextBox.ResetOriginalValue();
            NextInspectionTextBox.ControlChanged += ControlChanged;

            NotesTextBox.ResetOriginalValue();
            NotesTextBox.ControlChanged += ControlChanged;
        }
        private void BindTextBox(CalibrationComponentPropertyWrapViewModel propertyValue, string bindName, int rowCount, int columnPossition, bool enabled)
        {
            CmsTextBox newCmsTextBox = new CmsTextBox();
            newCmsTextBox.IsEnabled = enabled;

            Binding binding = new Binding(bindName)
            {
                Mode = BindingMode.TwoWay,
                Source = propertyValue,
                ValidatesOnExceptions = true,
                UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
            };

            newCmsTextBox.SetBinding(TextBox.TextProperty, binding);
            newCmsTextBox.Margin = new Thickness(1);

            newCmsTextBox.ResetOriginalValue();
            newCmsTextBox.ControlChanged += ControlChanged;

            PropertiesGrid.Children.Add(newCmsTextBox);
            Grid.SetRow(newCmsTextBox, rowCount);
            Grid.SetColumn(newCmsTextBox, columnPossition);
        }