/// <summary>
        /// Adds the field after.
        /// </summary>
        /// <param name="propertyPathField">The property path field.</param>
        public void AddFieldAfter(IPropertyPathFieldViewModel propertyPathField)
        {
            var newField = PropertyPathFieldEdit.NewPropertyPathField();
            newField.Index = Model.Subfields.Count > 0 ? Model.Subfields.Max(f => f.Index) + 1 : 1;

            Model.Subfields.Add(newField);

            var vm = FieldViewModelFactory.CreateExport().Value;
            vm.Initialize(newField, this);
            Subfields.Add(vm);

            propertyPathField.Subfield = vm;

            RaisePropertyChanged(() => CanSetSubfield);
        }
        /// <summary>
        /// Removes the fields after.
        /// </summary>
        /// <param name="propertyPathField">The property path field.</param>
        public void RemoveFieldsAfter(IPropertyPathFieldViewModel propertyPathField)
        {
            var position = Subfields.IndexOf(propertyPathField);
            var fieldsToRemove = new List<PropertyPathFieldEdit>();

            for (var i = Subfields.Count - 1; i > position; --i)
            {
                fieldsToRemove.Add(Subfields[i].Model);
                Subfields.RemoveAt(i);
            }

            Model.Subfields.RemoveRange(fieldsToRemove);

            propertyPathField.Subfield = null;

            RaisePropertyChanged(() => CanSetSubfield);
        }
        //private AvailableFieldsCriteria FieldsCriteria
        //{
        //    get
        //    {
        //        return _fieldsCriteria;
        //    }

        //    set
        //    {
        //        if (!_fieldsCriteria.Equals(value))
        //        {
        //            _fieldsCriteria = value;
        //            UpdateAvailableFields();
        //        }
        //    }
        //}

        #endregion Properties

        #region Public Methods

        /// <summary>
        /// Initializes the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="parentViewModel">The parent view model.</param>
        public void Initialize(PropertyPathFieldEdit model, IPropertyPathViewModel parentViewModel)
        {
            Model = model;
            _fieldName = Model.FieldName;
            _subfield = null;
            ParentViewModel = parentViewModel;
            _hasSubfield = false;
        }