Problème lié au fait que mon UIButton ne soit pas lié au ViewModel. Lorsque vous cliquez sur le bouton, la commande IMVXCommand du ViewModel n'est pas appelée. Le bouton apparaît mais ne reconnaît pas l'événement tactile. La chose vraiment étrange est que si je devais créer le LoginButton en utilisant l'Interface Builder, le code ci-dessous fonctionne.MVVMCross: UIButton non lié (par programme)
Voici un exemple de code:
[Register("LoginView")]
public class LoginView : MvxView
{
UIBUtton loginButton;
public LoginView(IntPtr handler) : base(handler)
{
}
public LoginView(CGRect frame) : base(frame)
{
this.Frame = UIScreen.MainScreen.ApplicationFrame;
init();
}
init()
{
CreateView();
}
CreateView()
{
loginButton = new UIButton(new CoreGraphics.CGRect(0, 193, 300, 30))
{
Font = UIFont.SystemFontOfSize(15, UIFontWeight.Medium),
TranslatesAutoresizingMaskIntoConstraints = false,
BackgroundColor = UIColor.Red,
};
AddSubView(loginButton);
var set = this.CreateBindingSet<LoginView, LoginViewModel>();
set.Bind(loginButton).To(vm => vm.ClickCommand);
set.Apply();
}
}
ViewModel:
public class LoginViewModel : MvxViewModel
{
public AuthenticationViewModel() : base()
{
}
public IMvxCommand ClickCommand
{
get
{
return new MvxCommand(HandleClick);
}
}
public void HandleClick()
{
//This never gets called
}
}
Je pense que la bonne solution est de passer le Datacontext du conteneur MvxViewController à LoginView. De cette façon, les deux vues auront la même instance du LoginViewModel – Summon