2013-07-18 15 views

risposta

9

OK, dopo un sacco di lotta ho finalmente avuto la risposta.

Ho dovuto fare le seguenti cose.

1) Aggiunto un'istruzione import:

using Cirrious.MvvmCross.Binding.BindingContext; 

2) aggiunto il seguente codice:

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 
    SetContentView(Resource.Layout.Hello); 

    TableLayout containerLayout = this.FindViewById<TableLayout>(Resource.Id.containerLayout); 
    if (containerLayout != null) 
    {       
     TableRow newRow = new TableRow(base.ApplicationContext); 
     newRow.SetMinimumHeight(50); 

     var txtRace = new EditText(ApplicationContext); 
     txtRace.Hint = "Race"; 

     var bindingSet = this.CreateBindingSet<HelloView, HelloViewModel>(); 
     bindingSet.Bind(txtRace).To(vm => vm.Race); 
     bindingSet.Apply(); 

     newRow.AddView(txtRace); 
     containerLayout.AddView(newRow); 
    } 
} 

Ho già un "TableLayout" nel mio file HelloView.axml e tutto ciò che sono facendo ciò, si crea un nuovo controllo casella EditText (txtRace) e lo si aggiunge alla vista e allo stesso tempo si lega alla proprietà "Race" dell'oggetto HelloViewModel.

Dedico molto tempo a cercare di capire in quale spazio dei nomi il metodo CreateBindingSet() esiste perché VS2012 non mi dava alcun intelletto su questo.

Spero che questo aiuti qualcuno che si trova ad affrontare un problema simile.

+0

Buono a sapersi, l'hai risolto. In bocca al lupo! –

2

Sì MvvmCross supporta le proprietà di associazione ai controlli creati in fase di esecuzione. Puoi guardare questo tutorial dal fantastico Mr. Stuart nella sua serie N + 1. http://www.youtube.com/watch?feature=player_embedded&v=cYu_9rcAJU4

Nota: Ha dimostrato questo molte volte nella serie, ma mi ricordo questo uno sulla parte superiore della mia testa in questo momento.

+0

Grazie Mohib per la vostra risposta. – Amit

+0

Sono ancora colpito da questo problema. Stavo guardando questo articolo: http://stackoverflow.com/questions/16724278/mvvmcross-for-android-how-to-do-binding-in-code. Il problema che sto affrontando è che non sono in grado di ottenere il metodo CreateBindingSet(). Attualmente la mia attività eredita da MvxActivity. Mi manca qualche riferimento all'assembly o spazio dei nomi. – Amit

+0

Grazie per il link al video. La parte in cui il signor Stuart parla di te può avere più modelli di vista utili. –

Problemi correlati