2016-05-19 8 views
0

Ich arbeite an einer Xamarin.iOS App und ich bin neu bei ReactiveUI.Xamarin.iOS ReactiveUI ReactiveTableViewCell Nicht verbindlich

Ich versuche, einige Eigenschaften in einer benutzerdefinierten Tabellenzelle zu binden, die ReactiveTableViewCell und IViewFor<> implementiert.

Die Beispiele, die ich gesehen habe, zeigen nur die Bindung an die TextLabel.Text, die für mich funktioniert, aber wenn Sie versuchen, an andere Eigenschaften in der Tabellenzelle, die im UI-Designer generiert wurde, zu binden bindet/nichts anzeigt.

Das Setup ist sehr ähnlich zu ReactiveTableViewSource-Sample, aber ich versuche, an ein Label zu binden, das ich mit dem Designer statt der Standard TextLabel.Text platziert.

Hier ist mein Aufruf, die Tabelle an die benutzerdefinierte Tabellenzelle zu binden.

Hier ist meine Initialize-Methode in der benutzerdefinierten Tabellenzelle.

public void Initialize() 
{ 
    this.WhenAnyValue(v => v.ViewModel.Name).BindTo(this, v => v.lblName.Text); // Doesn't Work 
    this.WhenAnyValue(v => v.ViewModel.Name).BindTo(this, v => v.TextLabel.Text); // Works 
    this.WhenAnyValue(v => v.ViewModel.Agency).BindTo(this, v => v.lblCompany.Text); 
    this.WhenAnyValue(v => v.ViewModel.Phone).BindTo(this, v => v.lblPhone.Text); 
    this.WhenAnyValue(v => v.ViewModel.Email).BindTo(this, v => v.lblEmail.Text); 

} 

tl; dr - Standard TextLabel.Text bindet, aber zusätzliche Eigenschaften nicht binden/Anzeige auf Tabellenansicht.

Antwort

0

Ok, ich konnte das funktionieren. Es war eine ziemlich einfache Lösung, aber ich sah einfach keine Beispiele/Dokumentationen dafür.

Das Problem war, dass alle mit dem Designer hinzugefügten Elemente null waren.

Hier ist, wie ich regelte es mit Storyboards mit dem Designer:

  1. Stellen Sie sicher, Sie eine Kennung für die Prototyp-Zelle gesetzt, die Sie verspottet.
    Set TableViewCell Identifier
  2. Aktualisieren Sie die Bindung in Ihrem ViewController, damit TableView den CellKey enthält.

    ViewModel.WhenAnyValue(vm => vm.SearchResults).BindTo<AgentSearchResult, AgentSearchResultsTableCell>(agentsTableView, new NSString("AgentSearchResultsCell"), 64, cell => cell.Initialize()); 
    

Nachdem Sie diese Änderungen der Datenbindung machen funktionierte perfekt.

Verwandte Themen