Xamarin.forms 表单:来自平台项目的EventAggregator

Xamarin.forms 表单:来自平台项目的EventAggregator,xamarin.forms,prism,Xamarin.forms,Prism,我的场景是这样的: 当我按下手机上的“后退”按钮时,我想从当前活动的viewmodel导航到另一个视图。 我想依靠EventAggregator,因为它很酷。然而,初始化整个prism是一种挑战,正如我们在“App.cs”中所做的那样 我试图想出一种从“MainActivity”开始初始化的方法,但是如果当时没有容器,那么如何在容器中注册这些内容呢 简而言之,我的问题是,如何使用EventAgRigator发送消息 一种方法是公开应用程序的静态属性,该属性只返回事件聚合器,然后使用它访问平台项目

我的场景是这样的: 当我按下手机上的“后退”按钮时,我想从当前活动的viewmodel导航到另一个视图。 我想依靠EventAggregator,因为它很酷。然而,初始化整个prism是一种挑战,正如我们在“App.cs”中所做的那样 我试图想出一种从“MainActivity”开始初始化的方法,但是如果当时没有容器,那么如何在容器中注册这些内容呢


简而言之,我的问题是,如何使用EventAgRigator发送消息

一种方法是公开应用程序的静态属性,该属性只返回事件聚合器,然后使用它访问平台项目中的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;
        }

    }
public class main活动:全局::Xamarin.Forms.Platform.Android.Forms应用活动
{
专用IUnityContainer\u容器;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
全局::Xamarin.Forms.Forms.Init(这个,bundle);
var application=new App();
_container=application.container;
加载应用程序(应用程序);
}
公共覆盖bool OnKeyDown(Keycode Keycode,KeyEvent e)
{
开关(如钥匙代码){
case Keycode.返回:
var eventAggregator=_container.Resolve();
eventAggregator.GetEvent().Publish(新对象());
打破
}
返回true;
}
}

谢谢,不过如果你们能够从平台(一切都从平台开始)开始初始化,那就太好了。事实上确实如此。上面写着LoadApplication(新应用程序());这就是它开始的时候。所以它发生在其他所有事情发生的地方。