RaisePropertyChanged无法在Droid中更新UI

时间:2016-03-02 11:44:55

标签: android listview data-binding xamarin mvvmcross

我有物品清单。当我从集合中删除项目,然后一切正常。但是当添加一个项目然后在mvvm交叉Droid的UI中获取更新问题。在WP和IOS中它工​​作正常。当项目被添加时,所有数据都从API返回并设置为list属性,但随后是属性调用的SET访问者,但由于GET访问器未被调用,因此RaisePropertyChanged无法正常工作。由于新添加的项目未显示在列表中。这是我的代码:

ViewModel:

public ObservableCollection<AppointmentDto> Appointments
    {
        get
        {
            if (appointments == null)
                appointments = new ObservableCollection<AppointmentDto>();

            return (appointments);
        }
        set
        {
            appointments = value;
            this.RaisePropertyChanged(() => this.Appointments);               
        }


private async void doApptsFetchAsync(int Id)
    {
        try
        {
            var appts = await schedulingService.GetAppointmentsAsync(Id);
            if (appts != null)
            {                  

                Appointments = new ObservableCollection<AppointmentDto>(appts);                  
            }

        }
        catch (Exception ex)
        {
            Mvx.Resolve<IUserInteraction>().Alert(ex.Message);
        }
    }

当我删除项目然后调用相同的上述方法并且其工作正常时,在初始化Appointments属性时,然后SET和GET两个访问器被调用。当添加item然后也调用相同的上述方法时,在这个时候初始化Appointments属性时它只调用SET访问器而不叫GET访问器。由于没有添加新项目的UI更新。

我为属性尝试了List和ObservableCollection类型,但没有运气。

请帮我解决这个问题。 谢谢。

0 个答案:

没有答案