Xamarin - 在将MasterDetailPage添加到容器之前必须设置Master和Detail

时间:2016-06-24 04:10:23

标签: xamarin xamarin.forms

我正在尝试将一个简单的Master Detail页面添加到已经存在的Xamarin应用程序中。这是MasterDetailPage声明

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
                  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                  xmlns:pages="clr-namespace:MyCareManager.XamForms.Pages;assembly=MyCareManager.XamForms"
                  x:Class="MyCareManager.XamForms.Pages.SettingsPage">
  <MasterDetailPage.Master>
    <ContentPage Title="This is the test master page"></ContentPage>
  </MasterDetailPage.Master>
  <MasterDetailPage.Detail>
    <NavigationPage>
      <x:Arguments>
        <ContentPage Title="This is a view"></ContentPage>
      </x:Arguments>
    </NavigationPage>
  </MasterDetailPage.Detail>
</MasterDetailPage>

但是,当我运行应用程序时,导航到页面时出现以下错误:

  

在将MasterDetailPage添加到a之前,必须先设置Master和Detail   容器

我假设它与autofac一样,在应用程序中用作IOC容器,但还没有能够指责它。还有其他人经历过这个吗?

5 个答案:

答案 0 :(得分:4)

尝试查看此链接,这解决了我的问题,https://github.com/rid00z/FreshMvvm/issues/64

答案 1 :(得分:3)

如果有人需要,我的运行代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="CrossApp1.MenuPage">
        <MasterDetailPage.Master>
          <ContentPage Title="Menu">
            <StackLayout Orientation="Vertical">
              <Button Text="Sports"/>
              <Button Text="Economy"/>
              <Button Text="Education"/>
              <Button Text="Science"/>
            </StackLayout>
          </ContentPage>
        </MasterDetailPage.Master>

        <MasterDetailPage.Detail>

          <NavigationPage>
            <x:Arguments>
              <ContentPage Title="This is a view"></ContentPage>
            </x:Arguments>
          </NavigationPage>
        </MasterDetailPage.Detail>
</MasterDetailPage>

答案 2 :(得分:1)

我忘记在我的InitializeComponent();代码后面使用MasterDetailPage。在您的情况下,必须是SettingsPage。我已经评论过了,因为他曾经向我展示过一次错误。

答案 3 :(得分:1)

您可以尝试:打开Master Detail Page的简单类。设置名称MyMasterPage(设置您想要的名称)。

public class MyMasterPage : MasterDetailPage
    {
        public MyMasterPage()
        {
            this.Master = new MenuPage();//name of your menupage                
            this.Detail = new DetailPage();//name of your detailpage

        }
    }

现在您拥有了您的主要详细信息页面。最后你应该添加2个ContentPage,一个用于Menu Page,另一个用于DetailPage。

答案 4 :(得分:0)

我通过添加Detail的{​​{1}}部分来解决了这个问题

喜欢

MasterDetailPage