Редактор для выбора поля карточки

Для выбора поля карточки, с которым связаны данные элемента управления, может использоваться стандартный редактор — Docsvision.BackOffice.WebLayoutsDesigner.Editors.FieldMetadataEditor. Данный редактор предоставляет возможность установки фильтра для ограничения доступных для выбора полей.

Следующий пример демонстрирует редактор, предоставляющий возможность выбирать только поля булева типа.

class BooleanMetadataEditor : ITypeEditor
{
    public FrameworkElement ResolveEditor(PropertyItem propertyItem)
    {
        var editor = new FieldMetadataEditor();

        //
        editor.FieldFilter = (field) => { return field.FieldType == FieldType.Bool; }; (1)
        return editor.ResolveEditor(propertyItem);
    }
}
1 Устанавливаем ограничением для отображаемых типов. Текущее обрабатываемое поле передаётся в field.

Использование возможностей фильтра FieldFilter позволяет установить более точные критерии для отображения списка полей в редакторе.

Например, в следующем коде поля ограничиваются по типу и связанной карточки и секции, с которой должно быть связано поле (для полей ссылающихся на справочники).

public FrameworkElement ResolveEditor(PropertyItem propertyItem)
{
    var editor = new FieldMetadataEditor();

    editor.FieldFilter = (field) => { (1)
        return (field.FieldType == FieldType.RefId || field.FieldType == FieldType.UniqueId) &&
            field.LinkedCardTypeId == RefBaseUniversal.ID && (2)
            field.LinkedSectionId == RefBaseUniversal.Items.ID; }; (3)

    return editor.ResolveEditor(propertyItem);
}
1 Устанавливаем фильтр.
2 Поле должно быть связано с карточкой Конструктор справочников
3 Поле должно быть связано с секцией Строка справочника