Xamarin MasterDetailPage-找不到任何指向“详细信息”页面窗口的方法
我已经创建了一个母版详细信息页面 我正在将项目列表加载到“详细信息”框架/窗口中 我想用模板/视图替换该页面的内容,该模板/视图没有任何理由作为菜单项中的一项存在 我试着替换主页和导航加载页面,但你失去了主细节上下文-菜单 请有人告诉我,为了在主细节上下文中使用我选择的页面替换当前页面,我调用了什么 例如,这不起作用-它会删除MasterDetail菜单Xamarin MasterDetailPage-找不到任何指向“详细信息”页面窗口的方法,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我已经创建了一个母版详细信息页面 我正在将项目列表加载到“详细信息”框架/窗口中 我想用模板/视图替换该页面的内容,该模板/视图没有任何理由作为菜单项中的一项存在 我试着替换主页和导航加载页面,但你失去了主细节上下文-菜单 请有人告诉我,为了在主细节上下文中使用我选择的页面替换当前页面,我调用了什么 例如,这不起作用-它会删除MasterDetail菜单 Navigation.PushAsync(new Arcade.Index()); 我创建了MasterDetailPage,基本上是通过
Navigation.PushAsync(new Arcade.Index());
我创建了MasterDetailPage,基本上是通过让VisualStudio生成它。我在成功登录后设置它,如下所示:
var welcome = new Pages.Welcome();
Application.Current.MainPage = welcome;
这是XAML的一个摘录,以表示欢迎
<MasterDetailPage.Master>
<pages:WelcomeMaster x:Name="MasterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<pages:Index />
</x:Arguments>
</NavigationPage>
InitializeComponent();
MasterPage.ListView.ItemSelected += ListView_ItemSelected;
this.Detail = new NavigationPage(new Arcade.Index());
尽管如此,当我稍后调用它时,MasterDetail菜单消失了
((MasterDetailPage)Application.Current.MainPage).Detail = new Arcade.Index();
1-使用App.Current.Mainpage
2-使用导航
最初创建详细信息时,请将其包装在NavigationPage中
然后,Page1可以在详细信息窗格中导航到Page2
3-明确传递对MasterDetailPage的引用
在App.xaml.cs中添加静态方法,然后可以使用它在代码中导航
public static void SetDatailPage(Page page)
{
if (App.Current.MainPage is MasterDetailPage)
{
var masterPage = (MasterDetailPage)App.Current.MainPage;
masterPage.Detail = new NavigationPage(page);
}
}
像这样使用它
App.SetDatailPage(new YourPageYouWannaNavigateTo());
请提供一个设置MasterDetailPageDetail属性的集合。我已经读过几次了,但是没有办法从我加载的视图中访问它。我加载到主控详细信息的页面与我可以找到的主控详细信息之间没有关系。如果她使用导航导航导航到详细信息框架内的新页面,或从App.current.MainPage引用当前主控详细信息,或者在创建详细页面App.Current.MainPage时手动传递对MasterDetail的引用。我看不到任何通过该方法访问现有MasterDetail的方法。我在示例中给出的导航替换了整个窗口。我不明白第三种方法?我真的很感激你的回答,但我似乎遗漏了一些基本的东西。例如,上面的这个变体仍然用我要加载的页面替换整个窗口,因此我丢失了菜单。这些选项都不允许我加载保留MasterDetail菜单的页面。MasterDetailPageApplication.Current.MainPage.Detail=新建Arcade.Index;那你就做错了。如果将主页设置为MasterDetailPage,然后更新Detail属性,则只会替换详细信息,而不会替换母版。您可能会丢失触发手机母版页外观的工具栏按钮-是这样吗?Jason,再次感谢你的帮助,但我已经回去编辑了我上面的帖子,向你展示了更多我的代码,希望你能发现一些东西,你怎么知道大师消失了?您通常如何切换它?一个手势,一个工具栏按钮,还是什么?
Navigation.PushAsync(new Page2());
// when you create Page1, pass a reference to the MasterDetailPage
// you will also need to modify Page1's constructor
this.Detail = new Page1(this);
public static void SetDatailPage(Page page)
{
if (App.Current.MainPage is MasterDetailPage)
{
var masterPage = (MasterDetailPage)App.Current.MainPage;
masterPage.Detail = new NavigationPage(page);
}
}
App.SetDatailPage(new YourPageYouWannaNavigateTo());