Durante las últimas semanas he estado trabajando en el desarrollo de una aplicación multiplataforma (IOS/Android/WP7) utilizando el framework MVVMCross. Hoy me encontré con un problema que realmente no sé cómo resolver, así que espero que puedas empujarme en la dirección correcta.Pasando variables de ViewModel a otra Vista (MVVMCross)
En el IOS he la construcción siguiente para navegar a otra página (debajo del código se encuentra en un modelo de vista):
KeyValuePair<string,string> kvpAct1 = new KeyValuePair<string, string>("short", ".countertest5");
public IMvxCommand BeckhoffActuator1
{
get
{
return new MvxRelayCommand<Type>((type) => this.RequestNavigate<Beckhoff.BeckhoffActuatorViewModel>(kvpAct1));
}
}
Cuando se activa esta IMvxCommand (botón pulsado) la siguiente vista se carga, en este caso, BeckhoffActuatorViewModel. En el código de la BeckhoffActuatorView utilizo el KeyValuePair desde arriba:
public class BeckhoffActuatorView : MvxTouchDialogViewController<BeckhoffActuatorViewModel>
{
ICollection<string> icol;
public BeckhoffActuatorView(MvxShowViewModelRequest request) : base(request, UITableViewStyle.Grouped, null, true)
{
icol = request.ParameterValues.Values;
}
public override void ViewDidLoad()
{
//Code
}
}
Esta construcción está trabajando muy bien en iOS, pero me gustaría utilizar la misma construcción en mi aplicación Android.
El código en ViewModel no ha cambiado ya que esa es la idea general de MVVM. Sin embargo, el código de la BackhoffActuatorView es diferente para Android:
public class BeckhoffActuatorView : MvxBindingActivityView<BeckhoffSensorViewModel>
{
public ICollection<string> icol;
public BeckhoffActuatorView()
{
Debug.WriteLine("Standard");
}
public BeckhoffActuatorView(MvxShowViewModelRequest request)
{
Debug.WriteLine("Custom");
icol = request.ParameterValues.Values;
}
protected override void OnViewModelSet()
{
SetContentView(Resource.Layout.BeckhoffActuatorView);
}
}
El código anterior no está funcionando, el MvxBindingActivityView no parece poner en práctica algo similar a la ViewController que utilizo en IOS. El código solo viene en el constructor estándar, y cuando lo dejo completamente no se compilará/ejecutará.
¿Alguien sabe que puedo acceder al par de valores clave que envío con RequestNavigate? ¡Gracias!
Gracias Stuart, usando el ejemplo de Twitter logré solucionar mi problema. – David
Buen trabajo: si necesita otro ejemplo de aprobación de parámetros, puede probar las muestras CustomerManagement y Books también :) – Stuart