Hello,
I am developing an application where i do not have menu buttons within shell view and with its functionallity loads other views in predefined regions.
However,
I do publish an event from my mainproject, of my solutions, viewmodel like:
public ICommand SokKundCommand { get { if (sokKundCommand == null) { sokKundCommand = new DelegateCommand(() => myEventAggregator.GetEvent<ActivateEvent>() .Publish(new ActivateOption(ViewType.SokKundView, WellKnownRegionNames.Region1)),() => true); } return sokKundCommand; } }
and when pressing button i got error message that "myEventAggregator" is Null and program stops.
Pleas see my MainProject ViewModel
class MainProjectViewModel:NotificationObject { private IEventAggregator myEventAggregator; private DelegateCommand sokKundCommand; private DelegateCommand stangApplikationCommand; public MainProjectViewModel() { } public MainProjectSystemViewModel(IEventAggregator ea) { this.myEventAggregator = ea; }
I understand that I must inject IEventAggregator within my ViewModel in order to publish/subscribe events between modules.
Please help me to
1. Inject in right way to my ViewModel so I can consume eventAggreator
2. Do it in right way in my bootstraper. Please see my bootstraper. Am i doind something wrong anywhere?
public class Bootstrapper:UnityBootstrapper { protected override ILoggerFacade CreateLogger() { return base.CreateLogger(); } protected override DependencyObject CreateShell() { return new Shell(); } protected override void InitializeShell() { base.InitializeShell(); App.Current.MainWindow = (Window)this.Shell; App.Current.MainWindow.Show(); } protected override IModuleCatalog CreateModuleCatalog() { var moduleCatalog = new ModuleCatalog(); Type kundModule = typeof(KundModul); moduleCatalog.AddModule(new ModuleInfo() { ModuleName = kundModule.Name, ModuleType = kundModule.AssemblyQualifiedName }); return moduleCatalog; } protected override void ConfigureContainer() { base.ConfigureContainer(); RegisterTypeIfMissing(typeof(IServiceLocator), typeof(UnityServiceLocatorAdapter), true); RegisterTypeIfMissing(typeof(IEventAggregator), typeof(EventAggregator), true); } protected override void ConfigureModuleCatalog() { base.ConfigureModuleCatalog(); } protected override void InitializeModules() { base.InitializeModules(); } }Thanks!