2016-07-05 9 views
0

UITableView에 사용자 지정 셀이 있습니다. 셀 코드 : 나는 MvxSimpleTableViewSource 사용하고Xamarin.iOS UITableView가 ReloadData()에 의해 업데이트되지 않았습니다.

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]; 
     } 
    } 

:

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

을하지만 SaleItem의 속성을 변경하기 위해 노력하고있어 때 내있는 TableView의 ISN (예를 수량에 대한) 직접 전화해도 업데이트 됨 TableView.ReloadData();

내가 뭘 잘못하고 있니?

+0

은 TableIt과 연결된 ViewModel뿐 아니라 SaleItem 클래스의 코드도 게시하십시오. 일반적으로 셀의 속성을 업데이트 한 후에는 ListView to ReloadData에 바인딩 된 ObservableCollection에서 RaisePropertyChanged를 호출해야합니다. – pnavk

답변

0

SaleItem은 INotifyPropertyChanged를 구현해야합니다. 그러면 속성을 변경할 수 있으며 테이블 셀에서 결과를 볼 수 있습니다.

가장 쉬운 방법은이 너겟을 사용하는 것입니다 : https://github.com/Fody/PropertyChanged하지만 직접 구현을 작성할 수도 있습니다.

관련 문제