Reputation: 17422
I want to use Mvvm
(Basic Mvvm) for MasterDetailPage
development. But facing issue to push new ContentPage
to Detail
If I am using code behind than no issue, I can do like below
private void Button_Clicked(object sender, System.EventArgs e)
{
Detail= new NavigationPage(new Menu1Page());
}
But when it comes to Mvvm
in ViewModel I don't have Detail page access there. So I can this, but it is hiding MasterDetailPage
async Task Menu1Page()
{
await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new Menu1Page());
}
So, how can push pages to Detail
from Mvvm?
Upvotes: 0
Views: 1096
Reputation: 17422
You can access Detail
page too in ViewModel. Just you need to cast App.Current.MainPage
as MasterDetailPage
. Look at code below.
async Task NavigateNext()
{
await (App.Current.MainPage as MasterDetailPage).Detail.Navigation.PushAsync(new Menu1Page());
//(App.Current.MainPage as MasterDetailPage).IsPresented = false;
}
The above code snippet pushing pages as child of MasterDetailPage
so that you can go back by pressing back arrow on Navigationbar
.
You can set pages directly to Detail
page, it shows pages at a first page of MasterDetailPage
in this scenario back arrow wont be available to go back, like below
(App.Current.MainPage as MasterDetailPage).Detail = new NavigationPage(new Menu1Page());
//(App.Current.MainPage as MasterDetailPage).IsPresented = false;
Upvotes: 5
Reputation: 1209
By default, no.
You need to define BindingContext
for the page, and use code-behind navigation.
Or use NavigationService
, more details Enterprise App Navigation
Or use any Mvvm framework for this.
Upvotes: 0