Xamarin.Forms的Prism:来自平台项目的EventAggregator

时间:2016-05-15 23:38:51

标签: xamarin.forms prism

我的情况是这样的: 当我按下移动设备上的后退按钮时,我想从当前活动视图模型导航到另一个视图。 我想依靠eventAggrigator,因为它很酷。然而,初始化整个棱镜的东西是有点挑战性的,正如我们从“App.cs”那样做 我试着想办法从“MainActivity”开始初始化,但是如果我在那时没有容器,我如何在容器中注册东西呢?

所以我的问题简而言之,我如何使用eventAggrigator发送消息?

2 个答案:

答案 0 :(得分:2)

一种方法是从Application公开一个静态属性,它只返回事件聚合器,然后使用它来访问平台项目中的IEventAggregator

答案 1 :(得分:2)

谢谢Brian。

我已经或多或少地完成了您在以下代码中建议的内容,工作

 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;
        }

    }