Dil*_*mah 5 c# data-binding xamarin.android mvvmcross xamarin
对于使用xamarin.android的MVVMCross来说,这是一个很新的场景.我在片段中有一个fab和mvx.recyclerview.因此,当我点击这个工厂时,它将使Recyclerview连续滚动.
即
void onclick(sender object ,eventargs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
Run Code Online (Sandbox Code Playgroud)
这是打破mvvm模式,所以MVVM Cross中有任何方法或方法,我可以用来从ViewModel收听View.
fab.click绑定与ICommand => viewmodel => view => updatescroll().
提前致谢.
Mat*_*att 10
好吧,因为不ViewModel应该知道View,你不应该调用它的任何方法.
我想提出一个event在ViewModel那里你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);
}
Run Code Online (Sandbox Code Playgroud)
然后你只需要调用它
void onclick(sender object , eventargs e)
{
// Do something inside your viewmodel
// ...
OnFabClickDone();
}
Run Code Online (Sandbox Code Playgroud)
在您的View构造函数中订阅此事件:
ViewModel.FabClickDone += ViewModel_FabClickDone;
Run Code Online (Sandbox Code Playgroud)
并创建一个您想要滚动的方法
void ViewModel_FabClickDone(Object sender, EventArgs e)
{
mrecyclerview.SmoothScrollToPosition(somevariable++); // do something.
}
Run Code Online (Sandbox Code Playgroud)
既然你正在使用MVVMcross,我会建议你使用一个命令来调用OnFabClickDone();
| 归档时间: |
|
| 查看次数: |
2210 次 |
| 最近记录: |