MasterDetailPage-无法找到定位“详细”页面窗口的任何方法

时间:2019-08-28 19:35:39

标签: xamarin xamarin.forms

我已经创建了一个“母版详细信息页面”

我正在将项目列表加载到“详细信息”框架/窗口中

我想用一个模板/视图替换该页面的内容,该模板/视图从没有任何理由作为菜单项中的一项存在

我尝试替换加载页面的MainPage和Navigation,但是您丢失了Master Detail上下文-菜单

请问有人告诉我我叫什么以便在保持“主详细信息”上下文的情况下用我选择的一个页面替换当前页面吗?

例如,这不起作用-删除了MasterDetail菜单

 Navigation.PushAsync(new Arcade.Index());

我已经通过让Visual Studio生成MasterDetailPage来创建了MasterDetailPage。我成功登录后进行设置,如下所示:

            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>

我已将此代码添加到了Welcome后面的代码中

        InitializeComponent();
        MasterPage.ListView.ItemSelected += ListView_ItemSelected;

        this.Detail = new NavigationPage(new Arcade.Index());

尽管如此,我稍后再调用时,MasterDetail菜单消失了

    ((MasterDetailPage)Application.Current.MainPage).Detail = new Arcade.Index();

2 个答案:

答案 0 :(得分:1)

1-使用App.Current.Mainpage

var md = (MasterDetailPage)App.Current.MainPage;
md.Detail = new MyPage();

2-使用导航

最初创建细节时,请将其包裹在NavigationPage

this.Detail = new NavigaitionPage(new Page1());

然后,Page1可以在Page2窗格中导航到Detail

Navigation.PushAsync(new Page2());

3-明确传递对MasterDetailPage

的引用
// when you create Page1, pass a reference to the MasterDetailPage
// you will also need to modify Page1's constructor
this.Detail = new Page1(this);

答案 1 :(得分:1)

在App.xaml.cs中添加静态方法,然后可以使用它在代码中导航

int

并像这样使用它

null