在Xamarin.Forms中,当ViewModel SelectedItem中的值发生更改时,不会自动更新选取器的问题可以通过以下方式解决:
以下是一个示例代码:
在ViewModel中定义SelectedItem属性:
private object _selectedItem;
public object SelectedItem
{
get { return _selectedItem; }
set
{
if (_selectedItem != value)
{
_selectedItem = value;
OnPropertyChanged(nameof(SelectedItem));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
在Xamarin.Forms页面中进行数据绑定:
<Picker SelectedItem="{Binding SelectedItem}">
<!-- 选项列表 -->
</Picker>
在页面的代码中订阅ViewModel中SelectedItem属性的更改事件:
public MyPage()
{
InitializeComponent();
BindingContext = new MyViewModel();
// 订阅SelectedItem属性的更改事件
(BindingContext as MyViewModel).PropertyChanged += OnSelectedItemChanged;
}
private void OnSelectedItemChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(MyViewModel.SelectedItem))
{
// 更新选取器的选中项
// 可以通过Picker的SelectedIndex或者SelectedValue属性来更新选中项
}
}
这样,当ViewModel中SelectedItem属性发生变化时,会触发属性更改事件,然后在页面的事件处理程序中更新选取器的选中项,从而实现选取器的更新。
领取专属 10元无门槛券
手把手带您无忧上云