Извиняюсь, если это действительно глупый вопрос, но я просто начать работу с caliburn.micro и я изо всех сил с получением eventAggregator, ничего, кажется, подписавшись ...Caliburn.Micro EventAggregator
Я не уверен, проблема с моделью просмотра или загрузчиком. Вот ViewModel:
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);
}
}
Bootstrapper:
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 как Контейнер МОК
EDIT:
Это кажется очень простой случай I d Не знаю, что я делаю. RTFM.
Реализация IHandle действительно работает. Кажется, что он дважды появляется в первый раз, когда обрабатывается тип. Я расскажу вам, почему.
Я пробовал это с использованием двух экземпляров интерфейса IHandle. Как IHandle, так и IHandle. Нет эффекта. –
И вызывается 'SayHello'? Вы установили точку останова? – csteinmueller
Он получает вызовы и точки останова. Хотя раньше я делал ошибку. Выполнение 'IHandle' работает (хотя первый раз публикация называется 'Handle' вызывается дважды), однако' IHandle' ничего не делает. –