我想将微调器中的选定文本绑定到ViewModel中名为SelectedRole的字符串。这就是我所做的
this.Bind(ViewModel, vm => vm.SelectedRole, v => v.roleSpinner.SelectedItem.ToString());
但是,我遇到了一个例外。
System.NotSupportedException: Index expressions are only supported with constants.
答案 0 :(得分:1)
Spinner的 SelectedItem 属性具有只读访问权限(无设置器),因此绑定是双向的,因此将不起作用。
一种替代方法是安装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);
我在手机上测试了所有这些内容,并且可以正常工作。让我知道此功能是否满足您的需求。