Beispiel #1
0
        async Task NavigateToView(Type viewModelType)
        {
            if (viewModelType is null)
            {
                throw new ArgumentNullException(nameof(viewModelType));
            }

            Type viewType;

            if (!_map.TryGetValue(viewModelType, out viewType))
            {
                throw new ArgumentException("No view found in view mapping for " + viewModelType.FullName + ".");
            }
            var constructor = viewType.GetTypeInfo()
                              .DeclaredConstructors
                              .FirstOrDefault(dc => dc.GetParameters().Count() <= 0);

            var view = constructor.Invoke(null) as Page;

            var vm = ((App)Application.Current).Kernel.GetService(viewModelType);

            view.BindingContext = vm;

            await XamarinFormsNav.PushAsync(view, true);
        }
Beispiel #2
0
 public async Task GoBack()
 {
     if (CanGoBack)
     {
         await XamarinFormsNav.PopAsync(true);
     }
     OnCanGoBackChanged();
 }
Beispiel #3
0
 public async Task RemoveLastView()
 {
     if (XamarinFormsNav.NavigationStack.Any())
     {
         var lastView = XamarinFormsNav.NavigationStack[XamarinFormsNav.NavigationStack.Count - 2];
         XamarinFormsNav.RemovePage(lastView);
     }
 }
Beispiel #4
0
        public async Task NavigateToMainPage()
        {
            if (XamarinFormsNav.NavigationStack.Count <= 1)
            {
                return;
            }

            for (var i = 0; i < XamarinFormsNav.NavigationStack.Count; i++)
            {
                await XamarinFormsNav.PopToRootAsync();
            }
        }
        public async Task ClearBackStack()
        {
            if (XamarinFormsNav.NavigationStack.Count <= 1)
            {
                return;
            }

            for (var i = 0; i < XamarinFormsNav.NavigationStack.Count - 1; i++)
            {
                XamarinFormsNav.RemovePage(XamarinFormsNav.NavigationStack[i]);
            }
        }
Beispiel #6
0
        private async Task NavigateToView(Type viewModelType)
        {
            Type viewType;

            if (!_map.TryGetValue(viewModelType, out viewType))
            {
                throw new ArgumentException("No view found in View Mapping for " + viewModelType.FullName + ".");
            }

            var constructor = viewType.GetTypeInfo()
                              .DeclaredConstructors
                              .FirstOrDefault(dc => dc.GetParameters().Count() <= 0);
            var view = constructor.Invoke(null) as Page;
            await XamarinFormsNav.PushAsync(view, true);
        }