结果没有出现在选择器Xamarin.Forms
问题描述:
我有一个代码扫描器,扫描后,它返回一个字符串值。然后我将这个字符串值添加到可观察集合中。结果没有出现在选择器Xamarin.Forms
当触发ScanCode()方法时,摄像机打开并扫描代码,然后将值添加到列表中。然后它回到页面,但选择器保持空白。请帮助解决问题。
private ObservableCollection<string> _codes;
public ObservableCollection<string> Codes
{
get { return _codes; }
set
{
_codes = value;
OnPropertyChanged();
}
}
public async void ScanCode()
{
codes= new ObservableCollection<string>();
var cd = await CodeScanViewModel.CodePage1(); // returns the code in string
if (cd != null)
{
_codes.Add(cd.ToString());
}
}
在我的XAML
然后,我已经定义了选择器如下:
<Picker
Title="Codes"
ItemsSource="{Binding Codes}"
VerticalOptions="Center" />
答
在这一点上,因为你已经设置集合的新实例_codes
但没有提出财产更改通知。因此,Picker
控件仍在侦听收集已更改事件的旧实例。为了解决这个问题,一定要使用:
public async void ScanCode()
{
Codes = new ObservableCollection<string>();
...
或者,
public async void ScanCode()
{
_codes = new ObservableCollection<string>();
OnPropertyChanged(nameof(Codes));
...