2017-07-23 1 views
0

Sous .Droid ont le fragment suivant:En utilisant MvvmCross CreateBindingSet dans un fragment Droid

public class DigestItemFragment : MvxFragment<DigestItemViewModel> 

Et dans ce, j'ai installé une liaison pour un bouton créé par programme.

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    this.EnsureBindingContextIsSet(savedInstanceState); 

    View view = this.BindingInflate(Resource.Layout.DigestItemFragment, null); 

    LinearLayout ls = view.FindViewById<LinearLayout>(Resource.Id.lakeside); 
    Button btn = new Button(container.Context); 
    string buttonText = "Get Down"; 
    btn.SetHeight(100); 
    btn.SetWidth(300); 
    btn.SetText(buttonText.ToCharArray(), 0, buttonText.Length); 
    btn.SetBackgroundColor(Color.Gray); 
    btn.SetPadding(20, 20, 20, 20); 
    ls.AddView(btn); 

    var owner = this as IMvxBindingContextOwner; 
    var set = owner.CreateBindingSet<IMvxBindingContextOwner, DigestItemViewModel>(); 
    set.Bind(btn).To(vm => vm.TimeSlotButtonOkCommand).WithFallback(btn); 
    set.Apply(); 

    return view; 
} 

Lorsque le bouton est cliqué, je peux briser sur l'appel à la TimeSlotButtonOkCommand dans le DigestItemViewModel, cependant, toutes les valeurs de propriété pour le modèle de vue semblent être nulle. Une raison possible de ce problème peut être la façon dont j'ai créé l'ensemble de liaison, en utilisant IMvxBindingContextOwner plutôt que DigestItemFragment (voir l'extrait de code suivant), mais malheureusement, je n'ai pas réussi à comprendre comment utiliser DigestItemFragment lors de la création du ensemble de reliure.

var set = owner.CreateBindingSet<IMvxBindingContextOwner, DigestItemViewModel>(); 

Toutes les idées sur ce que je l'ai fait mal et pourquoi les propriétés DigestItemViewModel sont tous à zéro dans le TimeSlotButtonOkCommand?

Répondre

0

Désolé ... mon erreur. Lors de la création de la liste des fragments, je n'avais pas initialisé le modèle de vue associé pour chaque correctement.