2016-05-15 57 views
2

我的情況是這樣的: 當我按下我的手機後退按鈕,我想從當前活動viewmodel導航到另一個視圖。 我想依賴eventAggrigator,因爲它很酷。然而,初始化整個棱鏡的東西有點具有挑戰性,因爲我們通過「App.cs」來做到這一點 我試圖想到一種方法來從「MainActivity」開始初始化,但是我怎麼註冊容器中的東西如果我在那時沒有容器?Xamarin.Forms棱鏡:從平臺項目EventAggregator

所以我的問題總之,我如何使用eventAggrigator發送消息?

回答

2

一種方法是暴露靜態屬性關閉它簡單的返回事件聚合器中的應用,然後用它來訪問IEventAggregator在你的平臺項目

+0

謝謝,如果你們設法從平臺開始初始化(一切都開始),那會很好。 – BraveHeart

+1

好吧,基本上它的確如此。它說LoadApplication(新App());那是什麼時候開始的。所以它恰好發生在其他事情發生的地方。 –

2

感謝布賴恩。

我已經做了或多或少的建議你在下面的代碼和它工作

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity 
    { 
     private IUnityContainer _container; 
     protected override void OnCreate(Bundle bundle) 
     { 

      base.OnCreate(bundle); 

      global::Xamarin.Forms.Forms.Init(this, bundle); 
      var application = new App(); 
      _container = application.Container; 
      LoadApplication(application); 
     } 

     public override bool OnKeyDown(Keycode keyCode, KeyEvent e) 
     { 
      switch (e.KeyCode) { 
       case Keycode.Back: 
        var eventAggregator = _container.Resolve<IEventAggregator>(); 
        eventAggregator.GetEvent<BackButtonPressed>().Publish(new object()); 
        break; 
      } 
      return true; 
     } 

    }