/// <summary>
        /// The add subfield after.
        /// </summary>
        /// <param name="fieldViewModel">
        /// The field view model.
        /// </param>
        public void AddSubfieldAfter(APQPDragAndDropOptionFieldViewModel fieldViewModel)
        {
            var sourceField = fieldViewModel.GetSelectedField();

            if (sourceField == null)
                return;

            var subfield = APQPDragAndDropOptionFieldEdit.NewSourceField();
            subfield.Level = Model.Subfields.Count > 0 ? Model.Subfields.Max(f => f.Level) + 1 : 1;
            Model.Subfields.Add(subfield);

            var vm = new APQPDragAndDropOptionFieldViewModel();
            vm.Initialize(subfield, this);
            Subfields.Add(vm);
            RaisePropertyChanged(() => Subfields);

            FieldList.BeginGetCrossReferenceSubfields(
                sourceField.DefinedIn,
                sourceField.SystemName,
                (sender, e) =>
                {
                    if (e.Error != null)
                        return;

                    vm.SetAvailableFields(e.Object);
                });
        }
        /// <summary>
        /// The add subfield.
        /// </summary>
        public void AddSubfield()
        {
            if (!string.IsNullOrEmpty(DropField) && BaseVM.AvailableDropFields != null
                && BaseVM.AvailableDropFields.Any())
            {
                var sourceField = BaseVM.AvailableDropFields.FirstOrDefault(f => f.SystemName == DropField);

                if (sourceField == null) return;

                var subfield = APQPDragAndDropOptionFieldEdit.NewSourceField();
                Model.Subfields.Add(subfield);

                var vm = new APQPDragAndDropOptionFieldViewModel();
                vm.Initialize(subfield, this);
                Subfields.Add(vm);
                RaisePropertyChanged(() => Subfields);

                FieldList.BeginGetCrossReferenceSubfields(
                    sourceField.DefinedIn,
                    sourceField.SystemName,
                    (sender, e) =>
                    {
                        if (e.Error != null) return;

                        vm.SetAvailableFields(e.Object);
                    });
            }
        }