public NavigationRoot(IDetailNavigation detailNavigation, IViewFor <NavigationMenuViewModel> menuPage)
        {
            InitializeComponent();
            NavigationPage.SetHasNavigationBar(this, false);
            detailNavigation.PushPage <MainViewModel>(resetStack: true, animate: false).Subscribe();

            Detail = (NavigationView)detailNavigation.View;
            Master = (ContentPage)menuPage;

            menuPage
            .WhenAnyObservable(x => x.ViewModel.Navigate)
            .Select(_ => false)
            .BindTo(this, x => x.IsPresented);

            Events
            .DeviceDisplayMainDisplayInfoChanged
            .Where(x => x.DisplayInfo.Orientation == DisplayOrientation.Landscape && Device.Idiom == TargetIdiom.Tablet)
            .Subscribe(x => MasterBehavior = MasterBehavior.SplitOnLandscape)
            .DisposeWith(_masterDetailBindings);

            // HACK: [rlittlesii: July 04, 2020] This is a hack around a Xamarin.Forms iOS issue.
            this.WhenAnyValue(x => x.IsPresented)
            .Where(x => Device.RuntimePlatform == Device.iOS)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(_ => Master.IconImageSource = ImageSource.FromFile("hamburger.png"))
            .DisposeWith(_masterDetailBindings);

            ViewModel = new NavigationRootViewModel();
        }
        private IObservable <Unit> ExecuteNavigate(OptionViewModel arg)
        {
            // HACK: [rlittlesii: July 04, 2020] Make this not suck, this is a great case for routes.
            switch (arg.Option)
            {
            case ListOption.Search:
                return(_detailNavigation.PushPage <SearchListViewModel>());

            case ListOption.DetailNavigation:
                return(_detailNavigation.PushPage <CoffeeListViewModel>());

            case ListOption.InfiniteScroll:
                return(_detailNavigation.PushPage <InfiniteScrollViewModel>());

            default:
                throw new ArgumentOutOfRangeException();
            }
        }