ReloadData()不更新Xamarin.iOS UITableView

时间:2016-07-05 12:58:30

标签: ios uitableview xamarin.ios mvvmcross

我有自定义单元格的 UITableView 。细胞代码:

public partial class SaleTableViewCell : MvxTableViewCell
    {
        public static readonly NSString Key = new NSString("SaleTableViewCell");
        public static readonly UINib Nib = UINib.FromName("SaleTableViewCell", NSBundle.MainBundle);

        public SaleTableViewCell(IntPtr handle)
            : base(handle)
        {
            this.DelayBind(() =>
            {
                var set = this.CreateBindingSet<SaleTableViewCell, SaleItem>();
                set.Bind(IdLabel).To(vm => vm.ProductKey);
                set.Bind(NameLabel).To(vm => vm.Description);
                set.Bind(QuantityLabel).To(vm => vm.Quantity);
                set.Bind(PriceLabel).To(vm => vm.Price);
                set.Bind(DiscountLabel).To(vm => vm.DiscountAmount);
                set.Bind(TotalLabel).To(vm => vm.Total);
                set.Apply();
            });
        }


        public static SaleTableViewCell Create()
        {
            return (SaleTableViewCell)Nib.Instantiate(null, null)[0];
        }
    }

我正在使用 MvxSimpleTableViewSource

var source = new MvxSimpleTableViewSource(TableView, SaleTableViewCell.Key, SaleTableViewCell.Key);
TableView.Source = source;

但是当我尝试更改 SaleItem 的任何属性时(例如 Quantity ),即使我直接调用TableView.ReloadData();,我的TableView也不会更新

我做错了什么?

1 个答案:

答案 0 :(得分:0)

SaleItem需要实现INotifyPropertyChanged。 然后,您可以更改其属性,并在表格单元格中查看结果。

最简单的方法是使用这个nuget:https://github.com/Fody/PropertyChanged,但你也可以自己编写实现。