viewdestroy tutorial standard net mvxasynccommand example xamarin.ios xamarin mvvmcross

xamarin.ios - tutorial - Encuadernación de la tecla ''IR'' en el teclado del software



mvxasynccommand (2)

La solución simple es la dada en la respuesta anterior.

Sin embargo, si desea ir más allá, puede agregar un enlace personalizado, implementado algo como:

public class MvxUITextFieldShouldReturnTargetBinding : MvxTargetBinding { private ICommand _command; protected UITextField View { get { return Target as UITextField; } } public MvxUITextFieldShouldReturnTargetBinding(UITextField target) : base(target) { target.ShouldReturn = HandleShouldReturn; } private bool HandleShouldReturn(UITextField textField) { if (_command == null) return false; var text = textField.Text; if (!_command.CanExecute(text)) return false; textField.ResignFirstResponder(); _command.Execute(text); return true; } public override MvxBindingMode DefaultMode { get { return MvxBindingMode.OneWay; } } public override void SetValue(object value) { var command = value as ICommand; _command = command; } public override System.Type TargetType { get { return typeof(ICommand); } } protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing); if (isDisposing) { var editText = View; if (editText != null) { editText.ShouldReturn = null; } } } }

que puedes registrar durante la configuración como:

registry.RegisterCustomBindingFactory<UITextField>("ShouldReturn", textField => new MvxUITextFieldShouldReturnTargetBinding(textField));

Creo que eso funcionaría, debería permitirle enlazar un MvxCommand o un MvxCommand<string>

Para más información sobre enlaces personalizados, vea N = 28 en http://mvvmcross.wordpress.com

Tengo un botón de inicio de sesión vinculado a un comando que existe dentro de mi ViewModel así:

this.AddBindings(new Dictionary<object, string>{{btnLogin,"TouchUpInside LoginCommand"}});

El teclado del software se suprime si se realiza un toque, en algún lugar fuera del teclado o en UITextField . Para evitar que el usuario tenga que hacer clic una vez en algún lugar de la pantalla para hacer que desaparezca el teclado y luego presionar el botón de inicio de sesión, me gustaría asociar el comando de inicio de sesión definido en ViewModel a la tecla ''IR'' en el teclado . es posible?


No puedes enlazar el botón en sí. Esto depende del UIView enfocado que activa el teclado para que tenga el botón GO . Es decir, si se trata de un UITextField , puede asignar una función o delegar a la propiedad ShouldReturn , que luego activa su LoginCommand . Algo como:

myUiTextField.ShouldReturn += delegate { ViewModel.LoginCommand.Execute(null); return true; };

Lea más sobre la propiedad en la documentación de la API de Xamarin.iOS .