Ejemplo n.º 1
0
        public void ClearFieldControls([NotNull] ContentModel contentModel)
        {
            Assert.ArgumentNotNull(contentModel, nameof(contentModel));

            foreach (var field in contentModel.Fields)
            {
                if (field.Control == null)
                {
                    continue;
                }

                FieldControlManager.RemoveWatcher(field.Control);
                field.Control.ValueModified -= contentModel.ValueModified;
            }

            var skin = AppearanceOptions.Skin as ISupportsReusableFieldControls;

            if (skin == null)
            {
                return;
            }

            foreach (var field in contentModel.Fields)
            {
                var removed = skin.RemoveFieldControl(field);
                if (!removed)
                {
                    continue;
                }

                var reusableFieldControl = field.Control as IReusableFieldControl;
                if (reusableFieldControl == null)
                {
                    continue;
                }

                reusableFieldControl.UnsetField();

                FieldTypeManager.Reuse(field.ActualFieldType, reusableFieldControl);
            }

            skin.Clear();
        }