如何使用 MVVMCross 和 Xamarin.Android 从 ViewModel 更新视图
How to Update View from ViewModel using MVVMCross and Xamarin.Android
我是 MVVMCross 的新手,xamarin.android 所以对场景一无所知。我在一个片段中有一个 fab 和 mvx.recyclerview。所以当我点击这个 fab 时,它会让 recyclerview 滚动一行。
即
void onclick(sender object ,eventargs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
这打破了 mvvm 模式,所以我可以使用 MVVM Cross 中的任何方式或方法从 ViewModel 回听视图。
fab.click 与 ICommand 绑定 => viewmodel => view=> updatescroll()。
提前致谢。
嗯,既然 ViewModel
不应该知道 View
,你不应该调用它的任何方法。
我建议在您的 ViewModel
中添加一个 event
,您的 View
可以订阅。因此,您将 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();
}
在您的视图构造函数中订阅此事件:
ViewModel.FabClickDone += ViewModel_FabClickDone;
并创建一个您要滚动的方法
void ViewModel_FabClickDone(Object sender, EventArgs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
由于您使用的是 MVVMcross,我建议您使用一个命令,您可以在其中调用 OnFabClickDone();
我是 MVVMCross 的新手,xamarin.android 所以对场景一无所知。我在一个片段中有一个 fab 和 mvx.recyclerview。所以当我点击这个 fab 时,它会让 recyclerview 滚动一行。
即
void onclick(sender object ,eventargs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
这打破了 mvvm 模式,所以我可以使用 MVVM Cross 中的任何方式或方法从 ViewModel 回听视图。
fab.click 与 ICommand 绑定 => viewmodel => view=> updatescroll()。
提前致谢。
嗯,既然 ViewModel
不应该知道 View
,你不应该调用它的任何方法。
我建议在您的 ViewModel
中添加一个 event
,您的 View
可以订阅。因此,您将 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();
}
在您的视图构造函数中订阅此事件:
ViewModel.FabClickDone += ViewModel_FabClickDone;
并创建一个您要滚动的方法
void ViewModel_FabClickDone(Object sender, EventArgs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
由于您使用的是 MVVMcross,我建议您使用一个命令,您可以在其中调用 OnFabClickDone();