Xamarin.Forms 的棱镜:来自平台项目的 EventAggregator
Prism for Xamarin.Forms: EventAggregator from the platform projects
我的场景是这样的:
当我按下手机上的后退按钮时,我想从当前活动的视图模型导航到另一个视图。
我想依赖 eventAggrigator,因为它很酷。然而,初始化整个棱镜的事情有点具有挑战性,因为我们从 "App.cs"
我试图想办法从 "MainActivity" 开始初始化,但是如果那时我没有容器,我该如何在容器中注册这些东西?
所以我的问题简而言之,我如何使用 eventAggrigator 发送消息?
一种方法是从应用程序公开静态 属性,它只是 returns 事件聚合器,然后使用它来访问平台项目中的 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;
}
}
我的场景是这样的: 当我按下手机上的后退按钮时,我想从当前活动的视图模型导航到另一个视图。 我想依赖 eventAggrigator,因为它很酷。然而,初始化整个棱镜的事情有点具有挑战性,因为我们从 "App.cs" 我试图想办法从 "MainActivity" 开始初始化,但是如果那时我没有容器,我该如何在容器中注册这些东西?
所以我的问题简而言之,我如何使用 eventAggrigator 发送消息?
一种方法是从应用程序公开静态 属性,它只是 returns 事件聚合器,然后使用它来访问平台项目中的 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;
}
}