【发布时间】:2014-01-24 14:53:33
【问题描述】:
抱歉,如果这是一个非常愚蠢的问题,但我刚刚开始使用 caliburn.micro,我正在努力获取 eventAggregator,似乎没有任何订阅...
我不确定问题出在视图模型还是引导程序上。这是视图模型:
class MainWindowViewModel : Screen
{
private readonly IEventAggregator _eventAggregator;
public MainWindowViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
_eventAggregator.Subscribe(this);
}
public void SayHello()
{
_eventAggregator.Publish("Hello World!");
}
public void Handle(string message)
{
MessageBox.Show(message);
}
}
引导程序:
class AppBootstrapper : Bootstrapper<MainWindowViewModel>
{
public static readonly Container ContainerInstance = new Container();
protected override void Configure()
{
ContainerInstance.Register<IWindowManager, WindowManager>();
ContainerInstance.RegisterSingle<IEventAggregator,EventAggregator>();
ContainerInstance.Register<MainWindowViewModel, MainWindowViewModel>();
ContainerInstance.Verify();
}
protected override IEnumerable<object> GetAllInstances(Type service)
{
return ContainerInstance.GetAllInstances(service);
}
protected override object GetInstance(System.Type service, string key)
{
return ContainerInstance.GetInstance(service);
}
protected override void BuildUp(object instance)
{
ContainerInstance.InjectProperties(instance);
}
}
任何我缺少的想法,我觉得我一定不能链接到某个地方......
我使用 SimpleInjector 作为 IOC 容器
编辑:
这似乎是一个非常简单的案例,我不知道自己在做什么。实时调频。
实施 IHandle 确实有效。不过,第一次处理该类型时,它似乎被调用了两次。我会调查一下原因。
【问题讨论】:
标签: c# caliburn.micro eventaggregator