[Запрос] Добавление EnumToVisibilityConverter, BoolToVisibilityConverter и CountToVisibilityConverter

dem0nd

Well-known member
Tier 3
Adviser
Messages
128
Использование универсальных и часто применяемых конвертеров могло бы значительно упростить написание XAML-кода, особенно в случаях, когда требуется скрывать различные элементы интерфейса. Ниже приведены примеры таких конвертеров.

EnumToVisibilityConverter

Данный конвертер позволяет скрывать элементы UI, относящиеся к определённым значениям перечислений.
Сейчас для этого приходится писать несколько DataTrigger для каждого типа, что избыточно.

В качестве параметра можно передавать:
  • перечисления по имени:
Code:
ConverterParameter="Banana,Apple,Watermelon"
  • или по числовым значениям:
Code:
ConverterParameter="0,5,7"
Также возможно передавать массив перечислений через привязку:
Code:
ConverterParameter="{Binding plugin.ArrayHidden}"
Для большей гибкости можно добавить второй параметр, указывающий режим скрытия (Hidden или Collapsed). Например:
Code:
ConverterParameter="Banana,Apple,Watermelon|Hidden"

BoolToVisibilityConverter

Стандартный BooleanToVisibilityConverter всегда скрывает элементы через Collapsed и не поддерживает параметров.
Однако во многих случаях требуется сохранять занимаемое пространство (Hidden).

Поэтому было бы полезно расширить конвертер, добавив параметр, позволяющий выбирать тип скрытия:
  • по умолчанию — Collapsed,
  • при необходимости — Hidden.

Особенности реализации​

Создание подобных универсальных конвертеров средствами JS затруднено, так как:
  • конвертеры могут использоваться в разных документах;
  • необходимо наличие базового плагина, регистрирующего их до применения;
  • текущий API не позволяет реализовать полноценные конвертеры с параметрами.
Добавление поддержки параметров позволит:
  • управлять типом скрытия элементов,
  • сократить количество дублирующегося кода,
  • избавиться от необходимости писать однотипные триггеры.
 
Last edited:
Back
Top