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 }
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); }
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(); }