我如何绑定到 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 上测试了所有这些,它按预期工作。让我知道此功能是否符合您的需求。
我想将微调器中的选定文本绑定到我的 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 上测试了所有这些,它按预期工作。让我知道此功能是否符合您的需求。