/// <summary>
 /// Constructor with actions before pop and push
 /// </summary>
 /// <param name="navigation"><see cref="INavigation"/> property from your <see cref="NavigationPage"/>.</param>
 /// <param name="pageLocator"><see cref="IPageLocator"/> that you created.</param>
 /// <param name="beforePopStrategy">
 /// Strategy that will be invoked every time before <see cref="Page"/> will be taken from navigation stack.
 /// Passing <see cref="Page"/> object that will be removed.
 /// </param>
 /// <param name="beforePushStrategy">
 /// Strategy that will be invoked every time before <see cref="Page"/> will be pushed on top of the navigation stack.
 /// Passing <see cref="Page"/> object that will be added.
 /// </param>
 public NavigationService(INavigation navigation, IPageLocator pageLocator, IPopStrategy beforePopStrategy, IPushStrategy beforePushStrategy)
 {
     _navigationParameters    = new Dictionary <string, object>();
     _cancellationTokenSource = new CancellationTokenSource();
     _pageNavigation          = navigation;
     _pageLocator             = pageLocator;
     _popStrategy             = beforePopStrategy;
     _pushStrategy            = beforePushStrategy;
 }
 /// <summary>
 /// Constructor with strategy for pushing
 /// </summary>
 /// <param name="navigation"><see cref="INavigation"/> property from your <see cref="NavigationPage"/>.</param>
 /// <param name="pageLocator"><see cref="IPageLocator"/> that you created.</param>
 /// <param name="beforePushStrategy"><see cref="IPushStrategy"/> that will be invoked before page is pushed to the navigation stack.</param>
 public NavigationService(INavigation navigation, IPageLocator pageLocator, IPushStrategy beforePushStrategy)
     : this(navigation, pageLocator, new DoNothingStrategy(), beforePushStrategy)
 {
 }