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