2017-06-27 2 views
0

Ich habe an die nächste weitergegeben Form Details mit strings und integers und ich sie im Inneren des Class's Konstruktor gespeichert sind, jetzt, wie kann ich binden die Werte im Konstruktor (parametrisierte Werte) an den TextCell innerhalb des TableView.Bindung TextCell in Tableview

zunächst, so starte ich ein anderes Formular.

await Navigation.PushAsync(new LoginSalesDetails(Usnmae, AgentNumber, AgentName, AgentPhone, AgentEmail, Agentrating)); 

Das ist mein Klassencode:

public LoginSalesDetails(string Username, string AgentNo, string AgentName, string AgentPhone, string AgentEmail, int AgentRating) 
     { 
      InitializeComponent(); 



      accountname_label.Text = AgentName; 
      agent_no_label.Text = AgentNo; 
      rating_label.Text = "" + AgentRating; 
      mobileno_label.Text = AgentPhone; 
      email_label.Text = AgentEmail; 

      Name_A(AgentName); 


     // DisplayAlert("Alert ", ""+AgentName, "OK"); 
     } 




     public string Name_A(string a) 
     { 


      return a; 
     } 

Dann wird dieser XAML-Code, der dem von TableView und TexCells besteht.

<TableView Intent="Form"> 
      <TableView.Root> 
       <TableSection Title="Agent Sales Details"> 
        <TextCell Text="Agent Number" Detail="{Binding Name_A}" /> 
        <TextCell Text="Agent Rating " Detail="4" /> 
        <TextCell Text="Agent Phone " Detail="0474774747475" /> 
        <TextCell Text="Agent Email " Detail="[email protected]" /> 
       </TableSection> 
      </TableView.Root> 
     </TableView> 

EDIT

Mein Class.cs Code:

public partial class LoginSalesDetails : ContentPage 
    { 
     public string Name_A { get; set; } 
     public string Email_A { get; set;} 
     public string Phone_A { get; set;} 
     public string Rating_A { get; set;} 
     public string No_A { get; set;} 

     public LoginSalesDetails(string Username, string AgentNo, string AgentName, string AgentPhone, string AgentEmail, int AgentRating) 
     { 
      InitializeComponent(); 



      accountname_label.Text = AgentName; 
      agent_no_label.Text = AgentNo; 
      rating_label.Text = "" + AgentRating; 
      mobileno_label.Text = AgentPhone; 
      email_label.Text = AgentEmail; 

      Name_A = AgentName; 
      Email_A = AgentEmail; 
      Phone_A = AgentPhone; 
      Rating_A = ""+ AgentRating; 



      // DisplayAlert("Alert ", ""+AgentName, "OK"); 
     } 


    } 

Meine XAML-Code:

<TableView Intent="Form"> 
      <TableView.Root> 
       <TableSection Title="Agent Sales Details"> 
        <TextCell Text="Agent Number" Detail="{Binding Name_A}" /> 
        <TextCell Text="Agent Rating " Detail="{Binding Email_A}" /> 
        <TextCell Text="Agent Phone " Detail="{Binding Phone_A}" /> 
        <TextCell Text="Agent Email " Detail="[email protected]" /> 
       </TableSection> 
      </TableView.Root> 
     </TableView> 
+0

Sie können nicht an eine Methode binden, es muss eine öffentliche Eigenschaft sein –

+0

Wie wird das gemacht? –

+0

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/ classes-and-structs/properties –

Antwort

1

Nun, habe ich eine andere Alternative jeden der TextCell eine ID gibt dann weisen Sie einfach nur die ID mit den String-Daten:

Wie unten

XAML:

<TableView Intent="Form"> 
      <TableView.Root> 
       <TableSection Title="Agent Sales Details"> 
        <TextCell Text="Agent Number" x:Name="agentNumber_txtcell" /> 
        <TextCell Text="Agent Rating " x:Name="agentRating_txtcell" /> 
        <TextCell Text="Agent Phone " x:Name="agentPhone_txtcell" /> 
        <TextCell Text="Agent Email " x:Name="agentEmail_txtcell" /> 
       </TableSection> 
      </TableView.Root> 
     </TableView> 

Dann einfach in (: Name x) an den Saiten: C# Klasse nur die ID zuweisen

public LoginSalesDetails(string Username, string AgentNo, string AgentName, string AgentPhone, string AgentEmail, int AgentRating) 
{ 
    InitializeComponent(); 



    agentNumber_txtcell.Detail= AgentNo; 
    agentRating_txtcell.Detail= ""+AgentRating; 
    agentPhone_txtcell.Detail= "" + AgentPhone; 
    agentEmail_txtcell.Detail= AgentEmail; 





// DisplayAlert("Alert ", ""+AgentName, "OK"); 
} 

Happy coding

+0

Das ist hübsch und einfacher danke. –

2

Sie jetzt ein Verfahren zu binden versuchen, das heißt nicht möglich. Dies sollte immer mit einer öffentlichen Eigenschaft geschehen. Zum Beispiel der Code wie folgt ändern:

public string Name_A { get; set; } 

public LoginSalesDetails(string Username, string AgentNo, string AgentName, string AgentPhone, string AgentEmail, int AgentRating) 
{ 
    InitializeComponent(); 



    accountname_label.Text = AgentName; 
    agent_no_label.Text = AgentNo; 
    rating_label.Text = "" + AgentRating; 
    mobileno_label.Text = AgentPhone; 
    email_label.Text = AgentEmail; 

    Name_A = AgentName; 


// DisplayAlert("Alert ", ""+AgentName, "OK"); 
} 

Beachten Sie, dass ich die Methode entfernt und hinzugefügt, um die Name_A als Eigenschaft.

Wenn Sie dies noch nicht getan haben, müssen Sie die BindingContext der Seite, die Ihre TableView enthält, auf die Instanz des LoginSalesDetails Objekts setzen.

+0

Hey, ich habe es, aber Sie wissen, was es nicht bindet der Text ist einfach leer –

+0

Bitte angeben, was es ist? Was hast du in deinem Code geändert? Und wie sieht es jetzt aus? –

+0

Ich habe meinen Code aktualisiert –

Verwandte Themen