使用MvvmCross,如果我想要一个按钮来打开一个新屏幕,我连接命令处理程序并使用ShowViewModel,如下所示:
ShowViewModel<InfoViewModel>();
是否有插入自定义动画,这是非常特定于平台的,并且仍然在核心中使用ShowViewModel?如果我在Droid项目中这样做,它看起来像这样:
OverridePendingTransition(Resource.Animation.push_up_in, Resource.Animation.push_up_out);
所以基本上我想要一种方法来挂钩Droid项目中的MvvmCross Activity创建。
答案 0 :(得分:6)
终于成功了!
在“设置”中覆盖CreateViewPresenter()
public class Setup : MvxAndroidSetup
{
...
...
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
return new CustomPresenter();
}
}
并创建了一个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);
}
}
答案 1 :(得分:2)
通过从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);
};