我的情况是这样的: 当我按下我的手机后退按钮,我想从当前活动viewmodel导航到另一个视图。 我想依赖eventAggrigator,因为它很酷。然而,初始化整个棱镜的东西有点具有挑战性,因为我们通过“App.cs”来做到这一点 我试图想到一种方法来从“MainActivity”开始初始化,但是我怎么注册容器中的东西如果我在那时没有容器?Xamarin.Forms棱镜:从平台项目EventAggregator
所以我的问题总之,我如何使用eventAggrigator发送消息?
我的情况是这样的: 当我按下我的手机后退按钮,我想从当前活动viewmodel导航到另一个视图。 我想依赖eventAggrigator,因为它很酷。然而,初始化整个棱镜的东西有点具有挑战性,因为我们通过“App.cs”来做到这一点 我试图想到一种方法来从“MainActivity”开始初始化,但是我怎么注册容器中的东西如果我在那时没有容器?Xamarin.Forms棱镜:从平台项目EventAggregator
所以我的问题总之,我如何使用eventAggrigator发送消息?
一种方法是暴露静态属性关闭它简单的返回事件聚合器中的应用,然后用它来访问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;
}
}
谢谢,如果你们设法从平台开始初始化(一切都开始),那会很好。 – BraveHeart
好吧,基本上它的确如此。它说LoadApplication(新App());那是什么时候开始的。所以它恰好发生在其他事情发生的地方。 –