c# - supported - Cómo actualizar la vista desde ViewModel usando MVVMCross y Xamarin.Android
mvxasynccommand (1)
Bueno, dado que ViewModel
no debe conocer la View
, no debe llamar a ningún método de la misma.
Propondría un event
en su ViewModel
donde su View
puede suscribirse. Entonces llama a su event
algo así como FabClickDone
y su vista hace lo que quiera, cuando ocurrió este evento. En tu caso desplazándote.
Aquí hay un ejemplo de código para su ViewModel:
public delegate void FabClickDoneEvent(object sender, EventArgs args);
public event FabClickDoneEvent FabClickDone;
protected virtual void OnFabClickDone()
{
FabClickDone?.Invoke(this, EventArgs.Empty);
}
Entonces solo llámalo por
void onclick(sender object , eventargs e)
{
// Do something inside your viewmodel
// ...
OnFabClickDone();
}
En tu constructor de View, suscríbete a este evento:
ViewModel.FabClickDone += ViewModel_FabClickDone;
Y crea un método donde quieras hacer tu desplazamiento
void ViewModel_FabClickDone(Object sender, EventArgs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
Como está usando MVVMcross, le sugiero que use un comando, donde llama a OnFabClickDone ();
Soy nuevo en MVVMCross con xamarin.android tan poco atacado con un escenario. Tengo una réplica de fab y mvx.recycler dentro de un fragmento. así que cuando hago clic en este fab hará que la vista recicladora se desplace por una fila.
es decir
void onclick(sender object ,eventargs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
esto está rompiendo el patrón mvvm, entonces hay alguna forma o método en MVVM Cross que pueda usar para escuchar de nuevo la Vista desde ViewModel.
fab.click vinculante con ICommand => viewmodel => view => updatescroll ().
gracias por adelantado.