当我使用mvxSimpletableViewSource时,Xamarin IOS TableView不会重新加载



我的表视图在更改源属性时都不会更新。代码如下:

public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        viewmodel = this.ViewModel as ListViewModel;
        viewmodel.PropertyChanged += HandlePropertyChangedEventHandler;;
        var source = new MvxSimpleTableViewSource( TableView, LaborCell.Key, LaborCell.Key);
        TableView.Source = source;
        var set = this.CreateBindingSet<ListView, ListViewModel>();
        set.Bind(source).To(vm => vm.LaborTransactions);
        set.Apply();
        TableView.ReloadData();
    }

ViewModel:

        public class ListViewModel :MaxRawBaseViewModel
            {
          public ListViewModel():base()
                {
                    LoadLaborTransactions();
                }
         private Collection<LaborTransaction> _laborTransactions;
                public Collection<LaborTransaction> LaborTransactions
                {
                    get { return _laborTransactions; }     
                }
     public void LoadLaborTransactions()
            {
                _laborTransactions = DataService.GetLaborTransactions(somenumber);
                RaisePropertyChanged(() => LaborTransactions); 
            }
}

每当Transactions上午更改时,请在属性变化方法上调用tablview.reolad()。但这不是在重新加载我的餐桌

void HandlePropertyChangedEventHandler(object sender, System.ComponentModel.PropertyChangedEventArgs e){
            if (e.PropertyName.Equals("LaborTransactions"))
            {
                       TableView.ReloadData();
            }
    }

Collection<T>不实现 INotifyPropertyChanged。您可以在此处的文档中验证这一点。您需要将LaborTransactions属性更改为实现INotifyPropertyChanged(例如ObservableCollection<T>MvxObservableCollection<T>(的集合类型。您可以看到ObservableCollection<T>在此处实现INotifyPropertyChanged

这样更改您的LaborTransactions

private ObservableCollection<LaborTransaction> _laborTransactions;
public ObservableCollection<LaborTransaction> LaborTransactions
{
    get { return _laborTransactions; }
    set {
        return _laborTransactions;
        RaisePropertyChanged(() => LaborTransactions);
    }
}

最新更新