2013-07-11 72 views
3

隨着MvvmCross,如果我想有一個按鈕,打開一個新的屏幕,我線了命令處理程序,並使用ShowViewModel,像這樣:自定義動畫與MvvmCross的Droid

 ShowViewModel<InfoViewModel>(); 

反正在自定義動畫堵塞,這是非常具體的平臺,仍然使用ShowViewModel的核心?如果我在Droid的項目這樣做,應該是這樣的:

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

所以基本上我想要的方式掛接到從Droid的項目MvvmCross活動創作。

回答

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);     
      }; 
+1

如果你想這樣做的「正確」的地方,那麼它的可能最好在自定義演示者中這樣做 - 請參閱http://slodge.blogspot.co.uk/2013/06/presenter-roundup.html的鏈接 – Stuart

+0

謝謝!我正在研究這個。 –

+0

你是否設法在'正確'的地方做到這一點?查看@Stuart提供的鏈接,但無法找到任何相關內容。 – Riga

5

終於成功了!

在安裝覆蓋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); 
    } 
}