繁体   English   中英

如何使用MVVMCross和Xamarin.Android从ViewModel更新视图

[英]How to Update View from ViewModel using MVVMCross and Xamarin.Android

对于使用xamarin.android的MVVMCross来说,这是一个很新的场景。 我在片段中有一个fab和mvx.recyclerview。 因此,当我点击这个工厂时,它将使Recyclerview连续滚动。

void onclick(sender object ,eventargs e)
{
   mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}

这是打破mvvm模式,所以MVVM Cross中有任何方法或方法,我可以用来从ViewModel收听View。

fab.click绑定与ICommand => viewmodel => view => updatescroll()。

提前致谢。

好吧,既然ViewModel不应该知道View ,你就不应该调用它的任何方法。

我会在ViewModel中提出一个View可以订阅的event 因此,当您发生此事件时,您可以将event称为FabClickDone并且您的视图会执行它想要的任何操作。 在你的情况下滚动。

以下是ViewModel的代码示例:

public delegate void FabClickDoneEvent(object sender, EventArgs args);
public event FabClickDoneEvent FabClickDone;

protected virtual void OnFabClickDone()
{
    FabClickDone?.Invoke(this, EventArgs.Empty);
}

然后你只需要调用它

void onclick(sender object , eventargs e)
{
    // Do something inside your viewmodel
    // ...
    OnFabClickDone();
}

在您的View构造函数中订阅此事件:

ViewModel.FabClickDone += ViewModel_FabClickDone;

并创建一个您想要滚动的方法

void ViewModel_FabClickDone(Object sender, EventArgs e)
{
    mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}

既然你正在使用MVVMcross,我会建议你使用一个命令来调用OnFabClickDone();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM