/// <summary>
 /// Gets an observable of the last page type from currently active section.
 /// The observable pushes a value whenever a navigation request is processed with the type of the last page ViewModel.
 /// </summary>
 /// <returns>An observable of types.</returns>
 public static IObservable <Type> ObserveActiveSectionLastPageType(this ISectionsNavigator sectionsNavigator)
 {
     return(sectionsNavigator
            .ObserveStateChanged()
            .Where(args => args.EventArgs.CurrentState.LastRequestState == NavigatorRequestState.Processed)
            .Select(args =>
     {
         var state = args.EventArgs.CurrentState;
         return state.ActiveSection?.State.Stack.LastOrDefault()?.ViewModel.GetType();
     })
            .StartWith(sectionsNavigator.State.ActiveSection?.State.Stack.LastOrDefault()?.ViewModel.GetType()));
 }
Exemplo n.º 2
0
 /// <summary>
 /// Gets an observable sequence that produces values whenever <see cref="ISectionsNavigator.StateChanged"/> is raised, pushing only the <see cref="SectionsNavigatorEventArgs.CurrentState"/> value.
 /// </summary>
 /// <param name="navigator">The sections navigator.</param>
 /// <returns>An observable sequence of <see cref="SectionsNavigatorState"/>.</returns>
 public static IObservable <SectionsNavigatorState> ObserveCurrentState(this ISectionsNavigator navigator)
 {
     return(navigator
            .ObserveStateChanged()
            .Select(pattern => pattern.EventArgs.CurrentState));
 }