/// <summary>
        /// UnSelect A field from the field list.
        /// </summary>
        /// <param name="fieldViewModel">selected field.</param>
        public void UnselectDisplayField(ISelectorFieldViewModel fieldViewModel)
        {
            var path = fieldViewModel.SystemName;

            var field = SelectedDisplayFields.FirstOrDefault(f => f.FullPath == path);

            if (field != null)
            {
                SelectedDisplayFields.Remove(field);

                UpdateCanMoveFields();
            }

            var newstr = string.Empty;
            ParentModel.Model.HeaderDisplayFields = string.Empty;
            if (!string.IsNullOrEmpty(SelectedFields))
                foreach (var str in this.SelectedFields.Split(',').Where(str => str != path && !string.IsNullOrEmpty(str)))
                {
                    newstr += str + ",";

                    var lfieldViewModel = this.SelectedDisplayFields.FirstOrDefault(f => f.FullPath == str);

                    if (string.IsNullOrEmpty(this.ParentModel.Model.HeaderDisplayFields))
                    {
                        if (lfieldViewModel != null)
                        {
                            this.ParentModel.Model.HeaderDisplayFields = lfieldViewModel.DisplayName;
                        }
                    }
                    else if (lfieldViewModel != null)
                    {
                        this.ParentModel.Model.HeaderDisplayFields += ", " + lfieldViewModel.DisplayName;
                    }
                }

            SelectedFields = newstr;
        }
        /// <summary>
        /// Select A field from the field list.
        /// </summary>
        /// <param name="fieldViewModel">Selected field.</param>
        public void SelectDisplayField(ISelectorFieldViewModel fieldViewModel)
        {
            var path = fieldViewModel.SystemName;

            if (SelectedFields.Contains(path + ","))
            {
                return;
            }

            var maxOrder = 0.0;

            if (!string.IsNullOrEmpty(SelectedFields))
                maxOrder = SelectedFields.Split(',').Length;

            SelectedFields += path + ",";
            if (string.IsNullOrEmpty(ParentModel.Model.HeaderDisplayFields))
                ParentModel.Model.HeaderDisplayFields = fieldViewModel.Name;
            else
                ParentModel.Model.HeaderDisplayFields += ", " + fieldViewModel.Name;

            var field = new CrossRefFieldEdit();
            field.FieldName = fieldViewModel.Name;
            field.FullPath = fieldViewModel.SystemName;
            field.Order = maxOrder + 1.0;
            field.FieldGuid = fieldViewModel.Model.Guid;

            var vm = new SelectedFieldViewModel();

            vm.Initialize(field, this);
            SelectedDisplayFields.Add(vm);

            UpdateCanMoveFields();
        }