Перейти к основному содержимому

Dropdown Binders

Биндеры для компонента TMP_Dropdown (TextMeshPro).


Привязка выбранного индекса TMP_Dropdown.value.

ИнтерфейсОписание
IBinder<int>Устанавливает индекс из ViewModel
INumberBinderПринимает int, float, long, double

Режимы: OneWay, OneTime, OneWayToSource (TwoWay запрещён).

[ViewModel]
public partial class LanguageViewModel
{
[OneWayBind] private int _selectedLanguageIndex;
}

bool → выбор между двумя индексами.

Режимы: OneWay, OneTime.


Привязка списка опций TMP_Dropdown.

ИнтерфейсОписание
IBinder<List<string>>Устанавливает текстовые опции
IBinder<List<Sprite>>Устанавливает опции-спрайты
IBinder<IEnumerable<TMP_Dropdown.OptionData>>Устанавливает опции с полным набором данных
IReverseBinder<List<TMP_Dropdown.OptionData>>Отправляет текущие опции обратно (OneWayToSource)

При установке значения старые опции очищаются, затем добавляются новые; null очищает список. Выбранный индекс сохраняется, если новый список его вмещает.

Режимы: OneWay, OneTime, OneWayToSource (TwoWay запрещён).

[ViewModel]
public partial class LanguageViewModel
{
[OneWayBind] private List<string> _languages;

public LanguageViewModel()
{
_languages = new List<string> { "English", "Русский", "日本語" };
}
}

bool → выбор между двумя наборами опций.


Заполняет опции значениями enum-типа привязанного значения. Опции перестраиваются только при смене типа; null очищает список. Необязательный конвертер IConverter<Enum, IEnumerable<OptionData>> (например, EnumToDropdownOptionDataConverter) задаёт подписи, без него берутся имена значений.


Привязка скорости затухания TMP_Dropdown.alphaFadeSpeed.

Отрицательное значение поднимается до 0, NaN логируется.

Режимы: OneWay, OneTime, OneWayToSource (TwoWay запрещён).


bool → выбор между двумя значениями скорости затухания.


Привязка команды к TMP_Dropdown.onValueChanged. При выборе элемента вызывает command.Execute(selectedIndex).

ИнтерфейсОписание
IBinder<IRelayCommand<int>>Передаёт индекс как int
IBinder<IRelayCommand<long>>Передаёт индекс как long

InteractableMode

Аналогично ButtonCommandBinder — реакция на CanExecute:

РежимПоведение
Interactabledropdown.interactable = canExecute
VisiblegameObject.SetActive(canExecute)
NoneНе реагирует
CustomВызывает ICanExecuteHandler.SetCanExecute(bool)

Параметризованные варианты

БиндерКомандаДоп. параметры
DropdownCommandBinderIRelayCommand<int> / IRelayCommand<long>
DropdownCommandBinder<T>IRelayCommand<int, T>1 параметр
DropdownCommandBinder<T1, T2>IRelayCommand<int, T1, T2>2 параметра
DropdownCommandBinder<T1, T2, T3>IRelayCommand<int, T1, T2, T3>3 параметра

Первый параметр команды — всегда выбранный индекс.

Режимы: OneWay, OneTime.

[ViewModel]
public partial class LanguageViewModel
{
[RelayCommand]
private void SelectLanguage(int index) { /* ... */ }
// → IRelayCommand<int> SelectLanguageCommand
}

MonoBinder для OneWayToSource-привязки TMP_Dropdown как компонента. Наследует ComponentToSourceMonoBinder<TMP_Dropdown>.


См. также