如何使用 Mvvm 将页面推送到 MasterDetailPage

Arv*_*iya 0 c# mvvm xamarin xamarin.forms

我想使用Mvvm(Basic Mvvm)进行MasterDetailPage开发。但面临着推新的ContentPage问题Detail

如果我使用后面的代码没有问题,我可以这样做

private void Button_Clicked(object sender, System.EventArgs e)
{
  Detail=  new NavigationPage(new Menu1Page());
}
Run Code Online (Sandbox Code Playgroud)

但是当涉及到MvvmViewModel,我没有详细信息页面访问权限。所以我可以这样做,但它被隐藏了MasterDetailPage

async Task Menu1Page()
{
   await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new Menu1Page());
}
Run Code Online (Sandbox Code Playgroud)

Detail那么,如何从Mvvm推送页面呢?

Arv*_*iya 5

您也可以在 ViewModel 中访问Detail页面。只是你需要强制转换App.Current.MainPageMasterDetailPage. 看下面的代码。

async Task NavigateNext()
{
   await (App.Current.MainPage as MasterDetailPage).Detail.Navigation.PushAsync(new Menu1Page());
   //(App.Current.MainPage as MasterDetailPage).IsPresented = false;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段将页面作为 的子项推送MasterDetailPage,以便您可以通过按 上的后退箭头返回Navigationbar

您可以直接将页面设置为Detail页面,它会在第一页显示页面,MasterDetailPage在这种情况下后退箭头将无法返回,如下所示

(App.Current.MainPage as MasterDetailPage).Detail = new NavigationPage(new Menu1Page());
//(App.Current.MainPage as MasterDetailPage).IsPresented = false;
Run Code Online (Sandbox Code Playgroud)