结果没有出现在选择器Xamarin.Forms中

时间:2017-10-12 05:46:14

标签: c# xamarin.forms observablecollection picker

我有一个代码扫描程序,扫描后,它返回一个字符串值。然后我将此字符串值添加到可观察的集合中。

触发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" />

1 个答案:

答案 0 :(得分:0)

此时,您已将集合的新实例设置为_codes,但未提出属性更改通知。因此Picker控件仍然在侦听集合更改事件的旧实例。为了解决这个问题,请务必使用:

public async void ScanCode()
{
    Codes = new ObservableCollection<string>();
...

或者,

public async void ScanCode()
{
    _codes = new ObservableCollection<string>();
     OnPropertyChanged(nameof(Codes));
...