我如何绑定到 Spinner.SelectedItem

How do I bind to Spinner.SelectedItem

我想将微调器中的选定文本绑定到我的 ViewModel 中名为 SelectedRole 的字符串。这就是我所做的

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

但是,我运行陷入了异常。

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

Spinner 的 SelectedItem 属性 具有只读访问权限(无 setter),因此 Bind 将无法工作,因为它是双向的。

一种替代方法是安装 ReactiveUI.Events 包并使用 ItemSelected observable,如下所示:

_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);

我在我的 phone 上测试了所有这些,它按预期工作。让我知道此功能是否符合您的需求。