我想使用Mvvm
(基本Mvvm)进行MasterDetailPage
开发。但是面临将新的ContentPage
推送到Detail
如果我在后面使用 code 没什么问题,我可以在下面做
private void Button_Clicked(object sender, System.EventArgs e)
{
Detail= new NavigationPage(new Menu1Page());
}
但是在 ViewModel 中的Mvvm
上,我没有 Detail 页面访问权限。所以我可以,但是它隐藏了MasterDetailPage
async Task Menu1Page()
{
await Xamarin.Forms.Application.Current.MainPage.Navigation.PushModalAsync(new Menu1Page());
}
那么,如何将页面从Mvvm推送到Detail
?
答案 0 :(得分:2)
您也可以在ViewModel中访问Detail
页面。只是您需要将App.Current.MainPage
强制转换为MasterDetailPage
。看下面的代码。
async Task NavigateNext()
{
await (App.Current.MainPage as MasterDetailPage).Detail.Navigation.PushAsync(new Menu1Page());
//(App.Current.MainPage as MasterDetailPage).IsPresented = false;
}
上面的代码片段将页面作为MasterDetailPage
的子代推送,以便您可以通过按Navigationbar
上的向后箭头来返回。
您可以将页面直接设置为Detail
页,在这种情况下,它会显示MasterDetailPage
第一页的页面,后退箭头将无法像后退一样
(App.Current.MainPage as MasterDetailPage).Detail = new NavigationPage(new Menu1Page());
//(App.Current.MainPage as MasterDetailPage).IsPresented = false;
答案 1 :(得分:0)
默认情况下,不。
您需要为页面定义BindingContext
,并使用代码隐藏导航。
或使用NavigationService
,更多详细信息Enterprise App Navigation
或为此使用任何Mvvm框架。