[英]MVVMCross: How to bind Xamarin.Android events to ViewModel commands
[英]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.