Rya*_*ton 4 mvvmcross xamarin xamarin.droid
使用MvvmCross,如果我想要一个按钮来打开一个新屏幕,我连接命令处理程序并使用ShowViewModel,如下所示:
ShowViewModel<InfoViewModel>();
Run Code Online (Sandbox Code Playgroud)
无论如何插入自定义动画,这是非常特定于平台的,并且仍然在核心中使用ShowViewModel?如果我在Droid项目中这样做,它看起来像这样:
OverridePendingTransition(Resource.Animation.push_up_in, Resource.Animation.push_up_out);
Run Code Online (Sandbox Code Playgroud)
所以基本上我想要一种方法来挂钩Droid项目中的MvvmCross Activity创建.
终于设法做到了!
在安装程序中重写CreateViewPresenter()
public class Setup : MvxAndroidSetup
{
...
...
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
return new CustomPresenter();
}
}
Run Code Online (Sandbox Code Playgroud)
并创建了一个CustomPresenter类来执行动画:
public class CustomPresenter : MvxAndroidViewPresenter
{
protected override void Show(Intent intent)
{
Activity.StartActivity(intent);
Activity.OverridePendingTransition(Resource.Animator.slide_in_left, Resource.Animator.slide_out_left);
}
}
Run Code Online (Sandbox Code Playgroud)
通过从 UI 中的 MvxActivity 调用命令来解决。
var infoBtn = FindViewById<RelativeLayout>(Resource.Id.infobtn);
infoBtn.Click += delegate(object sender, EventArgs args)
{
((MainMenuViewModel)ViewModel).InfoCommand.Execute(null);
OverridePendingTransition(Resource.Animation.push_up_in, Resource.Animation.push_up_out);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2385 次 |
| 最近记录: |