Enables loosely-coupled publication of and subscription to events.
Наследование: IEventAggregator
Пример #1
0
        // All shared initialization
        public static void Init() {
            SimpleConfigurator.ConfigureForConsoleLogging(LogLevel.Info); // Doesnt seem to work anymore?!
            SetupNlog.Initialize("Test Runner");
            CommonBase.AssemblyLoader = GetAssemblyLoader();
            // Use to Reset the various common instances
            // Normally the EA instance is created in the AppBootStrapper, and Dependency injected into ShellViewModel
            Common.App = new Common.AppCommon();
            Common.Paths = new PathConfiguration();
            // Must set AppPath to curdir, otherwise we end up somewhere in test heaven
            // Also keep the test configuration and temp data separate from production
            Common.App.InitLocalWithCleanup("Test Runner");
            var ea = new EventAggregator();
            Cheat.SetServices(new CheatImpl(ea, new Mediator(null, null)));
            DomainEvilGlobal.Settings = new UserSettings();
            /*
            Tools.RegisterServices(new ToolsServices(new ProcessManager(),
                new Lazy<IWCFClient>(() => new WCFClient()),
                new Lazy<IGeoIpService>(() => new GeoIpService()), new CompressionUtil()));
                */
            ReSetupTools();

            if (!SingleSetup) {
                new AssemblyHandler().Register();
                SingleSetup = true;
            }
        }
        protected override void Configure()
        {
            _container = new WindsorContainer();
            _eventAggregator = new EventAggregator();

            _container.Register(Component.For<IWindowManager>()
                                         .ImplementedBy<WindowManager>()
                                         .LifestyleSingleton(),
                                Component.For<IEventAggregator>()
                                         .Instance(_eventAggregator)
                                         .LifestyleSingleton(),
                                Component.For<IHostingService>()
                                         .ImplementedBy<HostingService>()
                                         .LifestyleSingleton(),
                                Component.For<IClient>()
                                         .ImplementedBy<Client.ServiceObjects.Client>()
                                         .LifestyleSingleton(),
                                Component.For<IShell>()
                                         .ImplementedBy<ShellViewModel>()
                                         .LifestyleSingleton(),
                                Classes.FromThisAssembly()
                                       .InNamespace("Client", true)
                                       .WithService.DefaultInterfaces()
                                       .LifestyleTransient());
        }
 protected BaseShellViewModel(IEventAggregator eventAggregator)
 {
     this._eventAggregator = eventAggregator as EventAggregator;
     eventAggregator.Subscribe(this);
     Application.Current.Host.Content.FullScreenChanged += new EventHandler(this.ContentFullScreenChanged);
     base.PropertyChanged += new PropertyChangedEventHandler(this.BaseShellViewModelPropertyChanged);
 }
        public void WorkerServicePropertyInterigator_SetActivityProperties_NoSourceNameFromResourceRepo_NoSourceIdOnXML()
        {
            //------------Setup for test--------------------------
            IEventAggregator evtAg = new EventAggregator();
            Mock<IEnvironmentModel> env = new Mock<IEnvironmentModel>();
            Mock<IStudioResourceRepository> exp = new Mock<IStudioResourceRepository>();
            var resRepo = new Mock<IResourceRepository>();
            var srcRes = new Mock<IResourceModel>();
            srcRes.Setup(a => a.DisplayName).Returns("bob");
            resRepo.Setup(a => a.FindSingle(It.IsAny<Expression<Func<IResourceModel, bool>>>(), false, false)).Returns(srcRes.Object);

            env.Setup(e => e.Name).Returns("My Env");
            var resource = new ResourceModel(env.Object, evtAg) { WorkflowXaml = new StringBuilder("<Action SourceName=\"TheSource\" Type=\"TheType\" SourceMethod=\"SourceMethod\"></Action>") };
            resource.ServerResourceType = "TheType";
            var activity = new DsfActivity("FriendlyName", String.Empty, "ServiceName", string.Empty, string.Empty, string.Empty);

            //------------Execute Test---------------------------
            WorkerServicePropertyInterigator.SetActivityProperties(resource, ref activity, resRepo.Object);

            //------------Assert Results-------------------------
            Assert.IsFalse(activity.IsWorkflow);
            Assert.AreEqual("TheType", ((Literal<string>)(activity.Type.Expression)).Value);
            Assert.AreEqual("TheSource", activity.FriendlySourceName.Expression.ToString());
            Assert.AreEqual("SourceMethod", activity.ActionName.Expression.ToString());
        }
Пример #5
0
		public DrawingViewModel(
			PdfPage page,
			EventAggregator messageBus)
		{
			_page = page;
			_messageBus = messageBus;

			Image = new Observable<TransformedBitmap>(new TransformedBitmap());
			IsGeneratingImage = new Observable<bool>(true);
		}
        public ShellViewModel()
        {
            var eventAggregator = new Caliburn.Micro.EventAggregator();
            var feed            = new TwitterFeedViewModel(eventAggregator);
            var tracker         = new TweetTrackerViewModel(eventAggregator);

            Items.Add(feed);
            Items.Add(tracker);
            Main    = Items[0];
            SideBar = Items[1];
        }
Пример #7
0
        public DownloadHelper(EventAggregator e)
        {
            eventAggregator = e;

            client = new WebClient();
            file = IsolatedStorageFile.GetUserStoreForApplication();
            message.downloaderStatus = DownloaderStatus.Idle;

            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
            client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
        }
 public TasksListViewModel(
     TaskList taskList, 
     EventAggregator eventAggregator,
     Func<string, LoadTasks> loadTasksFactory, 
     Func<TaskList, EditTasksList> editTasksListFactory,
     Func<TaskList, DeleteTasksList> deleteTasksListsFactory)
 {
     _taskList = taskList;
     _eventAggregator = eventAggregator;
     _loadTasksFactory = loadTasksFactory;
     _editTasksListFactory = editTasksListFactory;
     _deleteTasksListsFactory = deleteTasksListsFactory;
 }
Пример #9
0
		public SelectOutputViewModel(FigureExportBuilder figureExportBuilder, EventAggregator messageBus)
		{
			_figureExportBuilder = figureExportBuilder;
			_messageBus = messageBus;
			ShowSelection = new Observable<bool>(false);
			ShowSaving = new Observable<bool>(false);
			ShowCompleted = new Observable<bool>(false);
			
			ErrorMessage = new Observable<string>();
			SavingMessage = new Observable<string>("");

			string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
			_targetDirectory = Path.Combine(desktop, "Figures");
		}
        public void Should_fire_protected_actions()
        {
            var aggregator = new EventAggregator();
            var view = new XtraReport { DataSource = new[] { new object(), new object() } };

            view.Bands.Add(new DetailBand());

            view.Bands[0].Controls.Add(new XRLabel { Text = "Original Text" });

            var controller = new Controller_with_protected_action_to_change_text(aggregator, view, null);

            var newReport = controller.Print(p => p.ExportToMemory());
            newReport.Bands[0].Controls[0].Text.Should().Be("TextChanged");
        }
        public void Should_fire_injected_actions()
        {
            var aggregator = new EventAggregator();
            var view = new XtraReport { DataSource = new[] { new object(), new object() } };

            view.Bands.Add(new DetailBand());

            view.Bands[0].Controls.Add(new XRLabel { Text = "Original Text" });

            var action = ReportControlAction<XRLabel>.WithNoPredicate(l => l.Text = "TextChanged");
            var controller = new ReportController(aggregator, view,new ReportControlActionFacade(action));

            var newReport = controller.Print(p => p.ExportToMemory());

            newReport.Bands[0].Controls[0].Text.Should().Be("TextChanged");
        }
        public void WorkflowPropertyInterigator_SetActivityProperties_WhenNullXmlPayload_ExpectSomePropertiesSet()
        {
            //------------Setup for test--------------------------
            IEventAggregator evtAg = new EventAggregator();
            Mock<IEnvironmentModel> env = new Mock<IEnvironmentModel>();
            Mock<IStudioResourceRepository> exp = new Mock<IStudioResourceRepository>();
            env.Setup(e => e.Name).Returns("My Env");
            var resource = new ResourceModel(env.Object, evtAg);

            var activity = new DsfActivity("FriendlyName", String.Empty, "ServiceName", string.Empty, string.Empty, string.Empty);
            //------------Execute Test---------------------------

            WorkflowPropertyInterigator.SetActivityProperties(resource, ref activity);

            //------------Assert Results-------------------------
            Assert.IsTrue(activity.IsWorkflow);
            Assert.AreEqual("Workflow", activity.Type.Expression.ToString());
            Assert.AreEqual("My Env", activity.FriendlySourceName.Expression.ToString());
        }
        public void WorkerServicePropertyInterigator_SetActivityProperties_WhenNotNullXML_ExpectPropertiesSet()
        {
            //------------Setup for test--------------------------
            IEventAggregator evtAg = new EventAggregator();
            Mock<IEnvironmentModel> env = new Mock<IEnvironmentModel>();
            Mock<IStudioResourceRepository> exp = new Mock<IStudioResourceRepository>();
            env.Setup(e => e.Name).Returns("My Env");
            var resource = new ResourceModel(env.Object, evtAg) { WorkflowXaml = new StringBuilder("<Action SourceName=\"TheSource\" Type=\"TheType\" SourceMethod=\"SourceMethod\"></Action>") };
            resource.ServerResourceType = "TheType";
            var activity = new DsfActivity("FriendlyName", String.Empty, "ServiceName", string.Empty, string.Empty, string.Empty);

            //------------Execute Test---------------------------
            WorkerServicePropertyInterigator.SetActivityProperties(resource, ref activity, null);

            //------------Assert Results-------------------------
            Assert.IsFalse(activity.IsWorkflow);
            Assert.AreEqual("TheType", ((Literal<string>)(activity.Type.Expression)).Value);
            Assert.AreEqual("TheSource", activity.FriendlySourceName.Expression.ToString());
            Assert.AreEqual("SourceMethod", activity.ActionName.Expression.ToString());
        }
        public void WorkerServicePropertyInterigator_SetActivityProperties_WhenNullXML_ExpectSomePropertiesSet()
        {
            //------------Setup for test--------------------------
            IEventAggregator evtAg = new EventAggregator();
            Mock<IEnvironmentModel> env = new Mock<IEnvironmentModel>();
            Mock<IStudioResourceRepository> exp = new Mock<IStudioResourceRepository>();
            env.Setup(e => e.Name).Returns("My Env");
            var resource = new ResourceModel(env.Object, evtAg);

            var activity = new DsfActivity("FriendlyName", String.Empty, "ServiceName", string.Empty, string.Empty, string.Empty);

            //------------Execute Test---------------------------
            WorkerServicePropertyInterigator.SetActivityProperties(resource, ref activity, null);

            //------------Assert Results-------------------------
            Assert.IsFalse(activity.IsWorkflow);
            Assert.IsNull(((Literal<string>)(activity.Type.Expression)).Value);
            Assert.IsNull(activity.FriendlySourceName);
            Assert.IsNull(activity.ActionName);
        }
Пример #15
0
        public void SetModelToDirtyAndExpectThatItemsWillBeAdded()
        {
            var eventAggregator = new EventAggregator();

            Mock<IContextualResourceModel> mockResourceModel = Dev2MockFactory.SetupResourceModelMock();
            mockResourceModel.Setup(resModel => resModel.WorkflowXaml).Returns(WorkflowXAMLForTest());

            var dataListViewModel = CreateDataListViewModel(mockResourceModel, eventAggregator);
            var dataListItems = new OptomizedObservableCollection<IDataListItemModel>();
            IDataListItemModel dataListItem = new DataListItemModel("scalar1", enDev2ColumnArgumentDirection.Input, string.Empty);
            IDataListItemModel secondDataListItem = new DataListItemModel("scalar2", enDev2ColumnArgumentDirection.Input, string.Empty);

            dataListItems.Add(dataListItem);
            dataListItems.Add(secondDataListItem);

            DataListSingleton.SetDataList(dataListViewModel);

            dataListItems.ToList().ForEach(dataListViewModel.ScalarCollection.Add);
            dataListViewModel.RecsetCollection.Clear();
            WorkflowDesignerViewModel workflowDesigner = CreateWorkflowDesignerViewModel(eventAggregator, mockResourceModel.Object, null, false);
            workflowDesigner.DispatcherUpdateAction = (a => DataListSingleton.ActiveDataList.UpdateDataListItems(workflowDesigner.ResourceModel, a));
            IDataListItemModel dataListItem3 = new DataListItemModel("scalar8", enDev2ColumnArgumentDirection.Input, string.Empty);
            workflowDesigner.ChangeIsPossible = true;

            dataListItems.Add(dataListItem3);
            Thread.Sleep(3000);
            workflowDesigner.Dispose();
            Assert.AreEqual(5, dataListViewModel.ScalarCollection.Count);
        }
Пример #16
0
        public void RemoveAllUnusedDataListObjectsWithItemsNotUsedExpectedItemsRemoved()
        {
            var eventAggregator = new EventAggregator();

            Mock<IContextualResourceModel> mockResourceModel = Dev2MockFactory.SetupResourceModelMock();
            mockResourceModel.Setup(resModel => resModel.WorkflowXaml).Returns(WorkflowXAMLForTest());

            var dataListViewModel = CreateDataListViewModel(mockResourceModel, eventAggregator);
            var dataListItems = new OptomizedObservableCollection<IDataListItemModel>();
            IDataListItemModel dataListItem = new DataListItemModel("scalar1", enDev2ColumnArgumentDirection.Input, string.Empty);
            IDataListItemModel secondDataListItem = new DataListItemModel("scalar2", enDev2ColumnArgumentDirection.Input, string.Empty);

            dataListItems.Add(dataListItem);
            dataListItems.Add(secondDataListItem);

            DataListSingleton.SetDataList(dataListViewModel);

            dataListItems.ToList().ForEach(dataListViewModel.ScalarCollection.Add);
            dataListViewModel.RecsetCollection.Clear();
            WorkflowDesignerViewModel workflowDesigner = CreateWorkflowDesignerViewModel(eventAggregator, mockResourceModel.Object, null, false);
            workflowDesigner.DispatcherUpdateAction = (a => DataListSingleton.ActiveDataList.UpdateDataListItems(workflowDesigner.ResourceModel, a));
            workflowDesigner.AddMissingWithNoPopUpAndFindUnusedDataListItems();
            dataListViewModel.RemoveUnusedDataListItems();
            workflowDesigner.Dispose();
            Assert.AreEqual(0, dataListViewModel.ScalarCollection.Count);
        }
Пример #17
0
 public SelectInputViewModel(FigureExportBuilder figureBuilder, EventAggregator eventBus)
 {
     _figureBuilder = figureBuilder;
     _eventBus = eventBus;
 }
        protected virtual void BindServices(CompositionBatch batch)
        {
            try
            {
                _tinyIoCContainer = new TinyIoCContainer();
                var eventAggregator = new EventAggregator();

                // Defaults
                batch.AddExportedValue<IWindowManager>(new WindowManager());
                batch.AddExportedValue<IEventAggregator>(eventAggregator);

                // framework and infrastructure
                _tinyIoCContainer.Register<IEventAggregator>(eventAggregator);
                // _tinyIoCContainer.Register<IServiceLocator>(new TinyServiceLocator(_container));
                _tinyIoCContainer.RegisterMultiple<IMessageEventSubscriber>(new[] {typeof (EventMessageListener)})
                    .AsSingleton();

                // register other implementations
                DependencyFactory.Configure(_tinyIoCContainer);

                // Export IoC registrations
                batch.AddExportedValue(_tinyIoCContainer.Resolve<IRestartableMessageListener>());

                batch.AddExportedValue(Container);
            }
            catch (Exception e)
            {
                Log.Error(e, "Error on Bootstrapper BindServices: {CompositionBatch}", batch);
            }
        }
Пример #19
0
        public void FindUnusedDataListItemsWithUnusedDataListItemsExpectedItemsToBeSetToNotUsed()
        {
            var eventAggregator = new EventAggregator();

            Mock<IContextualResourceModel> mockResourceModel = Dev2MockFactory.SetupResourceModelMock();
            mockResourceModel.Setup(resModel => resModel.WorkflowXaml).Returns(WorkflowXAMLForTest());

            var dataListViewModel = CreateDataListViewModel(mockResourceModel, eventAggregator);
            var dataListItems = new OptomizedObservableCollection<IDataListItemModel>();
            IDataListItemModel dataListItem = new DataListItemModel("scalar1", enDev2ColumnArgumentDirection.Input, string.Empty);
            IDataListItemModel secondDataListItem = new DataListItemModel("scalar2", enDev2ColumnArgumentDirection.Input, string.Empty);

            dataListItems.Add(dataListItem);
            dataListItems.Add(secondDataListItem);
            DataListSingleton.SetDataList(dataListViewModel);
            Mock<IPopupController> mockPopUp = Dev2MockFactory.CreateIPopup(MessageBoxResult.Yes);

            dataListItems.ToList().ForEach(dataListViewModel.ScalarCollection.Add);
            dataListViewModel.RecsetCollection.Clear();
            WorkflowDesignerViewModel workflowDesigner = CreateWorkflowDesignerViewModelWithDesignerAttributesInitialized(mockResourceModel.Object, eventAggregator);
            workflowDesigner.PopUp = mockPopUp.Object;
            //  workflowDesigner.MediatorRepo = _mockMediatorRepo.Object;

            Assert.IsTrue(dataListViewModel.ScalarCollection[0].IsUsed);
            Assert.IsTrue(dataListViewModel.ScalarCollection[1].IsUsed);

            workflowDesigner.AddMissingWithNoPopUpAndFindUnusedDataListItems();
            workflowDesigner.Dispose();
            Assert.IsTrue(!dataListViewModel.ScalarCollection[0].IsUsed);
        }
Пример #20
0
 public ClientSocket(string hostServer)
 {
     EventAgregator = new EventAggregator();
     HostServer = hostServer;
 }
Пример #21
0
        public static void ResetAppModel()
        {
            IEventAggregator oldAggregator = _eventAggregator;
            _eventAggregator = null;
            _slimCore = null;

            if (_network != null)
            {
                _network.Dispose();
            }

            _network = null;
            if (_game != null)
                _game.Dispose();
            _game = null;
            _AI = null;

            //Create new instances of these things by accessing them
            EventAggregator.GetHashCode();
            SlimCore.GetHashCode();
            XNAGame.GetHashCode();
            AI.GetHashCode();

            oldAggregator.Publish(new ResetMessage() { EventAggregator = _eventAggregator, });
        }
        private void SetUp()
        {
            mockService = new Mock<IInteractionRecorderService>();

            eventAggregator = new EventAggregator();
            commandSender = new InteractionRecorderCommandSender(eventAggregator);
            var factory = new InteractionRecorderViewModelFactory(commandSender);
            viewModel = factory.Create();
            commandHandler = new InteractionCommandHandler(eventAggregator, mockService.Object);
            changedProperties = new List<string>();
            viewModel.PropertyChanged += RecordProperyChanged;
        }
Пример #23
0
        public void UpdateResourceMessage_WhenResourceExistsChangedCategory_Expects_CategoryChanged()
        {
            var eventAggregator = new EventAggregator();

            Mock<IContextualResourceModel> mockResourceModel = Dev2MockFactory.SetupResourceModelMock();
            mockResourceModel.Setup(resModel => resModel.WorkflowXaml).Returns(WorkflowXAMLForTest());

            var workflowDesigner = CreateWorkflowDesignerViewModel(eventAggregator, mockResourceModel.Object, null, false);
            //var designerAttributes = new Dictionary<Type, Type>();
            //workflowDesigner.InitializeDesigner(designerAttributes);

            mockResourceModel.Setup(r => r.Category).Returns("Testing");
            var updatemsg = new UpdateResourceMessage(mockResourceModel.Object);
            workflowDesigner.Handle(updatemsg);

            mockResourceModel.Setup(r => r.Category).Returns("Testing2");
            updatemsg = new UpdateResourceMessage(mockResourceModel.Object);
            workflowDesigner.Handle(updatemsg);

            Assert.AreEqual("Testing2", workflowDesigner.ResourceModel.Category);
            workflowDesigner.Dispose();
        }
Пример #24
0
        public void WorkflowDesignerViewModel_BuildDataPart_ValidItem_ShouldAddItemToDataList()
        {
            //------------Setup for test--------------------------
            var eventAggregator = new EventAggregator();

            Mock<IContextualResourceModel> mockResourceModel = Dev2MockFactory.SetupResourceModelMock();
            mockResourceModel.Setup(resModel => resModel.WorkflowXaml).Returns(WorkflowXAMLForTest());
            var workflowDesigner = CreateWorkflowDesignerViewModel(eventAggregator, mockResourceModel.Object, null, false);
            var dataListViewModel = new DataListViewModel();
            DataListSingleton.SetDataList(dataListViewModel);
            dataListViewModel.AddBlankRow(null);
            //------------Execute Test---------------------------
            workflowDesigner.Handle(new AddStringListToDataListMessage(new List<string> { "[[rec().set]]", "[[test()]]", "[[scalar]]" }));
            //------------Assert Results-------------------------
            var dataListItemModels = DataListSingleton.ActiveDataList.DataList;
            workflowDesigner.Dispose();
            Assert.AreEqual(5, dataListItemModels.Count);
        }
        public void Should_not_collide_with_another_controller_when_both_printing_using_save_event_aggregator()
        {
            var view = new XtraReport { DataSource = new[] { new object(), new object() } };

            var counterA = 0;
            var counterB = 0;

            IEventAggregator aggregator = new EventAggregator();

            var actionA = ReportControlAction<XRControl>.WithNoPredicate(c => counterA++);
            var actionB = ReportControlAction<XRControl>.WithNoPredicate(c => counterB++);
            var facadeA = new ReportControlActionFacade(actionA);
            var facadeB = new ReportControlActionFacade(actionB);

            var controllerA = new ReportController(aggregator, view, facadeA);
            var controllerB = new ReportController(aggregator, view, facadeB);

            controllerA.Print(r => r.ExportToMemory());
            controllerB.Print(r => r.ExportToMemory());

            counterA.Should().Be(1);
            counterB.Should().Be(1);
        }
Пример #26
0
        public void GetDecisionElementsWhenItemAlreadyInDataListShouldNotReturnRecsetIfScalarNonExistent()
        {
            //Execute
            Mock<IContextualResourceModel> resourceModel = Dev2MockFactory.ResourceModel;
            var eventAggregator = new EventAggregator();

            var model = CreateWorkflowDesignerViewModel(eventAggregator, resourceModel.Object, null, false);
            var dataListViewModel = new DataListViewModel();

            dataListViewModel.InitializeDataListViewModel(resourceModel.Object);

            var recsetModel = new DataListItemModel("RecSet");
            dataListViewModel.RecsetCollection.Add(recsetModel);
            dataListViewModel.RecsetCollection[2].Children.Add(new DataListItemModel("aasszzz", parent: recsetModel));
            const string expression = "Dev2.Data.Decision.Dev2DataListDecisionHandler.Instance.ExecuteDecisionStack(\"{!TheStack!:[{!Col1!:![[a]]!,!Col2!:!Is Equal!,!Col3!:!0!,!PopulatedColumnCount!:2,!EvaluationFn!:!IsEqual!}],!TotalDecisions!:1,!ModelName!:!Dev2DecisionStack!,!Mode!:!AND!,!TrueArmText!:!True!,!FalseArmText!:!False!,!DisplayText!:!If ]] Is Equal [[scalar]]!}\",AmbientDataList)";
            var actual = model.GetDecisionElements(expression, dataListViewModel);
            model.Dispose();
            //Assert
            Assert.AreEqual(1, actual.Count, "Find missing returned an unexpected number of results when finding variables in a decision");
            Assert.AreEqual("{!TheStack!:[{!Col1!:!a!,!Col2!:!Is Equal!,!Col3!:!0!,!PopulatedColumnCount!:2,!EvaluationFn!:!IsEqual!}],!TotalDecisions!:1,!ModelName!:!Dev2DecisionStack!,!Mode!:!AND!,!TrueArmText!:!True!,!FalseArmText!:!False!,!DisplayText!:!If  Is Equal scalar!}", actual[0], "Find missing found an invalid variable in a decision");
        }
Пример #27
0
        /// <summary>
        /// Invoked when the application is launched normally by the end user.  Other entry points
        /// will be used when the application is launched to open a specific file, to display
        /// search results, and so forth.
        /// </summary>
        /// <param name="e">Details about the launch request and process.</param>
        protected async override void OnLaunched(LaunchActivatedEventArgs e)
        {
#if DEBUG
            if (System.Diagnostics.Debugger.IsAttached)
            {
                this.DebugSettings.EnableFrameRateCounter = true;
            }
#endif
            if (Events == null)
            {
                Events = new EventAggregator();
            }

            Frame rootFrame = Window.Current.Content as Frame;

            // Do not repeat app initialization when the Window already has content,
            // just ensure that the window is active
            if (rootFrame == null)
            {
                // Create a Frame to act as the navigation context and navigate to the first page
                rootFrame = new Frame();

                // TODO: change this value to a cache size that is appropriate for your application
                rootFrame.CacheSize = 1;

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    // Restore the saved session state only when appropriate.
                    try
                    {
                        await SuspensionManager.RestoreAsync();
                    }
                    catch (SuspensionManagerException)
                    {
                        // Something went wrong restoring state.
                        // Assume there is no state and continue.
                    }
                }

                // Place the frame in the current Window
                Window.Current.Content = rootFrame;
            }

            if (rootFrame.Content == null)
            {
                // Removes the turnstile navigation for startup.
                if (rootFrame.ContentTransitions != null)
                {
                    this.transitions = new TransitionCollection();
                    foreach (var c in rootFrame.ContentTransitions)
                    {
                        this.transitions.Add(c);
                    }
                }

                rootFrame.ContentTransitions = null;
                rootFrame.Navigated += this.RootFrame_FirstNavigated;

                // When the navigation stack isn't restored navigate to the first page,
                // configuring the new page by passing required information as a navigation
                // parameter
                if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
                {
                    throw new Exception("Failed to create initial page");
                }
            }

            // Ensure the current window is active
            Window.Current.Activate();
        }