Xamarin形成MasterDetail和PageRenderer

时间:2016-05-16 08:53:04

标签: xamarin.forms master-detail

情况: 使用Xamarin Forms和MasterDetail组件构建应用程序。

问题: 如何基于PageRender在Android上呈现特定页面?并保留抽屉?

修改

public class MasterBacASable : MasterDetailPage
{
    public MasterBacASable ()
    {
        Icon = null;
        Title = "The title";
        Detail =  (new FirstPage ());
        Master = new AppMenuPage ();
    }
}

[assembly:ExportRenderer(typeof(BacASable.FirstPage),typeof(BacASable.Droid.FirstPageContentRennderer))] 命名空间BacASable.Droid {     public class FirstPageContentRennderer:PageRenderer     {         public FirstPageContentRennderer()         {
        }

    protected override void OnElementChanged (ElementChangedEventArgs<Page> e)
    {
        base.OnElementChanged (e);
        var activity = this.Context as Activity;
        var v = activity.LayoutInflater.Inflate (Resource.Layout.AndroidView,this,false);
        AddView (v);
    }
}

}

2 个答案:

答案 0 :(得分:0)

关注Xamarin.Forms Master-Detail Documentation

基本概念如下

public class MainPageCS : MasterDetailPage
{
    MasterPageCS masterPage;

    public MainPageCS ()
    {
        masterPage = new MasterPageCS ();
        Master = masterPage;
        Detail = new NavigationPage (new ContactsPageCS ());
        ...
    }    
}

您的Master是您的抽屉,Detail是页面(ContentPage,TabbedPage,NavigationPage,CustomPageRenderer)。

因此,每次要显示不同的页面时,都会设置Detail属性

Detail = new MyContentPage();

答案 1 :(得分:0)

我只是忘记在渲染器中覆盖OnLayout。 谢谢你们。