【问题标题】:Prism for Xamarin.Forms: EventAggregator from the platform projectsPrism for Xamarin.Forms:来自平台项目的 EventAggregator
【发布时间】:2016-09-11 16:56:30
【问题描述】:

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

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

【问题讨论】:

    标签: xamarin.forms prism


    【解决方案1】:

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

    【讨论】:

    • 谢谢,如果你们设法使初始化从平台开始(一切都开始),那就太好了。
    • 嗯,基本上是这样。它说 LoadApplication(new 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;
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 2021-03-22
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多