我的情況是這樣的: 當我按下我的手機後退按鈕,我想從當前活動viewmodel導航到另一個視圖。 我想依賴eventAggrigator,因爲它很酷。然而,初始化整個棱鏡的東西有點具有挑戰性,因爲我們通過「App.cs」來做到這一點 我試圖想到一種方法來從「MainActivity」開始初始化,但是我怎麼註冊容器中的東西如果我在那時沒有容器?Xamarin.Forms棱鏡:從平臺項目EventAggregator
所以我的問題總之,我如何使用eventAggrigator發送消息?
我的情況是這樣的: 當我按下我的手機後退按鈕,我想從當前活動viewmodel導航到另一個視圖。 我想依賴eventAggrigator,因爲它很酷。然而,初始化整個棱鏡的東西有點具有挑戰性,因爲我們通過「App.cs」來做到這一點 我試圖想到一種方法來從「MainActivity」開始初始化,但是我怎麼註冊容器中的東西如果我在那時沒有容器?Xamarin.Forms棱鏡:從平臺項目EventAggregator
所以我的問題總之,我如何使用eventAggrigator發送消息?
一種方法是暴露靜態屬性關閉它簡單的返回事件聚合器中的應用,然後用它來訪問IEventAggregator在你的平臺項目
感謝布賴恩。
我已經做了或多或少的建議你在下面的代碼和它工作。
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;
}
}
謝謝,如果你們設法從平臺開始初始化(一切都開始),那會很好。 – BraveHeart
好吧,基本上它的確如此。它說LoadApplication(新App());那是什麼時候開始的。所以它恰好發生在其他事情發生的地方。 –