示例#1
0
        private async Task <bool> PushCoreAsync <TViewModel>(TViewModel viewModel, Func <TViewModel, Task> asyncConfig = null)
        {
            var viewType = await ViewLocator.ResolveViewTypeForAsync(viewModel?.GetType() ?? typeof(TViewModel), true);

            var page = ServiceLocator.GetAs <Page>(viewType);

            SetViewModel <TViewModel, BindableObject>(page, viewModel, (v, vm) => v.BindingContext = vm);

            if (asyncConfig != null)
            {
                await asyncConfig(viewModel);
            }

            await _NavigationRoot.PushAsync(page);

            return(true);
        }
        private async Task ShowModalCoreAsync <TViewModel>(TViewModel viewModel, Func <TViewModel, Task> asyncConfig = null, bool?animated = null)
        {
            var viewType = await ViewLocator.ResolveViewTypeForAsync(viewModel?.GetType() ?? typeof(TViewModel), true);

            if (asyncConfig != null)
            {
                await asyncConfig(viewModel);
            }

            var view = ServiceLocator.GetAs <FrameworkElement>(viewType);

            SetViewModel <TViewModel, FrameworkElement>(view, viewModel, (v, vm) => v.DataContext = vm);

#if WPF
            var dialog = new Window();
            var result = dialog.ShowDialog();
#else
            var dialog = new ContentDialog();
            var result = await dialog.ShowAsync();
#endif
        }
示例#3
0
        private async Task <bool> PushCoreAsync <TViewModel>(TViewModel viewModel, Func <TViewModel, Task> asyncConfig = null)
        {
            var viewType = await ViewLocator.ResolveViewTypeForAsync(viewModel?.GetType() ?? typeof(TViewModel), true);

            bool success = _NavigationRoot.Navigate(viewType);

            if (!success)
            {
                return(false);
            }

            if (asyncConfig != null)
            {
                await asyncConfig(viewModel);
            }

            var view = _NavigationRoot.Content as FrameworkElement;

            SetViewModel <TViewModel, FrameworkElement>(view, viewModel, (v, vm) => v.DataContext = vm);

            return(true);
        }
示例#4
0
        private async Task ShowModalCoreAsync <TViewModel>(TViewModel viewModel, Func <TViewModel, Task> asyncConfig = null, bool?animated = null)
        {
            var viewType = await ViewLocator.ResolveViewTypeForAsync(viewModel?.GetType() ?? typeof(TViewModel), true);

            var page = ServiceLocator.GetAs <Page>(viewType);

            SetViewModel <TViewModel, BindableObject>(page, viewModel, (v, vm) => v.BindingContext = vm);

            if (asyncConfig != null)
            {
                await asyncConfig(viewModel);
            }


            var view = page as INavigationAwareView;

            await view.TryAppearingAsync();

            await _NavigationRoot.PushModalAsync(page, animated ?? DefaultSettings.IsAnimationEnabled);

            await view.TryAppearedAsync();
        }