Как мне привязать Spinner.SelectedItem - PullRequest
0 голосов
/ 05 ноября 2018

Я хотел бы привязать выделенный текст из прядильщика к строке с именем SelectedRole в моей модели представления. Это то, что я сделал

this.Bind(ViewModel, vm => vm.SelectedRole, v => v.roleSpinner.SelectedItem.ToString());

Однако я столкнулся с исключением.

System.NotSupportedException: Index expressions are only supported with constants.

1 Ответ

0 голосов
/ 06 ноября 2018

Свойство SelectedItem Spinner имеет доступ только для чтения (без установщика), поэтому Bind не будет работать, поскольку он двусторонний.

Одной из альтернатив является установка пакета ReactiveUI.Events и использование наблюдаемого элемента ItemSelected следующим образом:

_spinner.Events().ItemSelected
    .Select(_ => _spinner.SelectedItem.ToString())
    .BindTo(ViewModel, x => x.Selected);

и, конечно, свойство модели представления является реактивным:

private string _selected;
public string Selected
{
    get => _selected;
    set => this.RaiseAndSetIfChanged(ref _selected, value);
}

и если вы хотите инициализировать значение счетчика, используйте метод SetSelection :

_spinner.SetSelection(2);

Я проверил все это на своем телефоне, и он работает, как ожидалось. Дайте мне знать, если эта функциональность соответствует вашим потребностям.

...