5

使用 MvvmCross,如果我想要一个按钮来打开一个新屏幕,我连接命令处理程序并使用 ShowViewModel,如下所示:

        ShowViewModel<InfoViewModel>();

无论如何要插入自定义动画,这些动画是非常特定于平台的,并且仍然在核心中使用 ShowViewModel?如果我在 Droid 项目中执行此操作,它将如下所示:

        OverridePendingTransition(Resource.Animation.push_up_in, Resource.Animation.push_up_out);

所以基本上我想要一种方法来挂钩从 Droid 项目创建的 MvvmCross 活动。

4

2 回答 2

7

终于设法做到了!

在安装程序中覆盖 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);
    }
}
于 2016-02-11T17:37:33.690 回答
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);                 
            };
于 2013-07-11T16:20:03.350 回答