Exrin 埃克斯林主页

Exrin 埃克斯林主页,exrin,Exrin,我用的是exrin的MasterDetailPage 这是我的ViewContainer 公共类MainViewContainer:Exrin.Framework.ViewContainer、IMasterDetailContainer { 私人只读母版页r_母版页 public MainViewContainer(MenuStack i_MenuStack, MainStack i_MainStack) : base(eContainer.Main.ToString()

我用的是exrin的MasterDetailPage 这是我的ViewContainer 公共类MainViewContainer:Exrin.Framework.ViewContainer、IMasterDetailContainer { 私人只读母版页r_母版页

    public MainViewContainer(MenuStack i_MenuStack, MainStack i_MainStack)
        : base(eContainer.Main.ToString())
    {
        r_MasterPage = new MasterDetailPage();
        MasterDetailProxy masterProxy = new MasterDetailProxy(r_MasterPage);
        NativeView = masterProxy.View;
        Proxy = masterProxy;
        DetailStack = i_MainStack;
        MasterStack = i_MenuStack;
        RegionMapping.Add(eRegions.Menu, ContainerType.Master);
        RegionMapping.Add(eRegions.Main, ContainerType.Detail);
    }

    public IHolder MasterStack { get; set; }

    public IHolder DetailStack { get; set; }

    public IMasterDetailProxy Proxy { get; set; }

    public bool IsPresented
    {
        get
        {
            return r_MasterPage.IsPresented;
        }

        set
        {
            r_MasterPage.IsPresented = value;
        }
    }

    public void SetStack(ContainerType i_ContainerType, object i_Page)
    {
        switch (i_ContainerType)
        {
            case ContainerType.Detail:
                r_MasterPage.Detail = i_Page as Page;
                break;
            case ContainerType.Master:
                r_MasterPage.Master = i_Page as Page;
                break;
        }
    }
}
    public MasterDetailProxy(MasterDetailPage i_MasterPage)
    {
        View = i_MasterPage;
        r_MasterPage = i_MasterPage;
    }

    public object DetailNativeView
    {
        get
        {
            return r_MasterPage.Detail;
        }

        set
        {
            r_MasterPage.Detail = value as Page;
        }
    }

    public object MasterNativeView
    {
        get
        {
            return r_MasterPage.Master;
        }

        set
        {
            Page page = value as Page;
            if(string.IsNullOrEmpty(page.Title))
            {
                page.Title = "Please set your MasterPage Title";
            }

            r_MasterPage.Master = page;
        }
    }

    public object View { get; set; }
}
这是我的IMasterDetailProxy 公共类MasterDetailProxy:IMasterDetailProxy { 私人只读母版页r_母版页

    public MainViewContainer(MenuStack i_MenuStack, MainStack i_MainStack)
        : base(eContainer.Main.ToString())
    {
        r_MasterPage = new MasterDetailPage();
        MasterDetailProxy masterProxy = new MasterDetailProxy(r_MasterPage);
        NativeView = masterProxy.View;
        Proxy = masterProxy;
        DetailStack = i_MainStack;
        MasterStack = i_MenuStack;
        RegionMapping.Add(eRegions.Menu, ContainerType.Master);
        RegionMapping.Add(eRegions.Main, ContainerType.Detail);
    }

    public IHolder MasterStack { get; set; }

    public IHolder DetailStack { get; set; }

    public IMasterDetailProxy Proxy { get; set; }

    public bool IsPresented
    {
        get
        {
            return r_MasterPage.IsPresented;
        }

        set
        {
            r_MasterPage.IsPresented = value;
        }
    }

    public void SetStack(ContainerType i_ContainerType, object i_Page)
    {
        switch (i_ContainerType)
        {
            case ContainerType.Detail:
                r_MasterPage.Detail = i_Page as Page;
                break;
            case ContainerType.Master:
                r_MasterPage.Master = i_Page as Page;
                break;
        }
    }
}
    public MasterDetailProxy(MasterDetailPage i_MasterPage)
    {
        View = i_MasterPage;
        r_MasterPage = i_MasterPage;
    }

    public object DetailNativeView
    {
        get
        {
            return r_MasterPage.Detail;
        }

        set
        {
            r_MasterPage.Detail = value as Page;
        }
    }

    public object MasterNativeView
    {
        get
        {
            return r_MasterPage.Master;
        }

        set
        {
            Page page = value as Page;
            if(string.IsNullOrEmpty(page.Title))
            {
                page.Title = "Please set your MasterPage Title";
            }

            r_MasterPage.Master = page;
        }
    }

    public object View { get; set; }
}
我用它在母版上显示菜单,在细节部分显示页面。 我的菜单视图是

<base:PageProxy xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:base="clr-namespace:Exrin.Base;assembly=Exrin.Base"
             xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin.Abstractions"
             xmlns:control="clr-namespace:BeAttend.Control;assembly=BeAttend"
             x:Class="BeAttend.View.MenuView" Title="Menu">
  <base:PageProxy.Icon>
      <OnPlatform x:TypeArguments="FileImageSource">
          <On Platform="iOS" >Icon-Small.png</On>
      </OnPlatform>
  </base:PageProxy.Icon>
  <ContentPage.Content>
    <Grid BackgroundColor="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="200" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid>
            <Image Source="menubg.jpg" Aspect="AspectFill" />
            <StackLayout Padding="0,20,0,0" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" >
                <controls:CircleImage BorderColor="White" BorderThickness="2" Source="{Binding VisualState.User.Picture}" Aspect="AspectFit" WidthRequest="100" HeightRequest="100" />
                <Label Text="{Binding VisualState.User.Name}" TextColor="White" FontSize="Large" />
            </StackLayout>
        </Grid>
        <StackLayout Margin="20,20,20,0" Grid.Row="1" Spacing="15">
            <control:NavigationItem Text="Dashboard" Icon="fa-archive" Command="{Binding NavigationCommand}" CommandParameter="Dashboard" />
            <ContentView HeightRequest="1" BackgroundColor="Gray" />
            <control:NavigationItem Text="Beacons" Icon="fa-archive" Command="{Binding NavigationCommand}" CommandParameter="Beacons" />
            <ContentView HeightRequest="1" BackgroundColor="Gray" />
            <control:NavigationItem Text="Create event" Icon="fa-archive" Command="{Binding NavigationCommand}" CommandParameter="CreateEvent" />
            <ContentView HeightRequest="1" BackgroundColor="Gray" />
            <control:NavigationItem Text="My events" Icon="fa-archive" Command="{Binding NavigationCommand}" CommandParameter="MyEvents" />
            <ContentView HeightRequest="1" BackgroundColor="Gray" />
            <control:NavigationItem Text="Registered events" Icon="fa-archive" Command="{Binding NavigationCommand}" CommandParameter="RegisteredEvents" />
            <ContentView HeightRequest="1" BackgroundColor="Gray" />
            <control:NavigationItem Text="Attendance QR" Icon="fa-archive" Command="{Binding NavigationCommand}" CommandParameter="AttendanceQr" />
            <ContentView HeightRequest="1" BackgroundColor="Gray" />
            <control:NavigationItem Text="Join Event" Icon="fa-archive" Command="{Binding NavigationCommand}" CommandParameter="JoinEvent" />
            <ContentView HeightRequest="1" BackgroundColor="Gray" />
            <control:NavigationItem Text="Logout" Icon="fa-arrow-circle-left" Command="{Binding LogoutCommand}" />
        </StackLayout>
    </Grid>
  </ContentPage.Content>
</base:PageProxy>

Icon-Small.png
我有几个问题: 1.在安卓系统上,我自动设置了汉堡包菜单按钮,但在iOS上,我没有任何图标,我尝试使用

<base:PageProxy.Icon>
      <OnPlatform x:TypeArguments="FileImageSource">
          <On Platform="iOS" >Icon-Small.png</On>
      </OnPlatform>
  </base:PageProxy.Icon>

Icon-Small.png
在菜单视图上,但它不工作。 2.在iOS上,页面标题是“请设置您的母版页标题”(如果页面标题为空,代理将设置该标题),但您可以在菜单视图上看到我为页面设置了标题,这仅在iOS上发生。

  • 当按下菜单上的链接时,我希望母版页消失,母版页当前保持打开并隐藏部分详细信息页,直到我按下详细信息页

  • 在详细信息页面上我有一个后退按钮,因此如果我想导航到另一个页面,我必须先按后退,然后我可以看到菜单图标以显示主页面并选择另一个链接。如何替换后退按钮以始终显示汉堡包菜单按钮? 这是我的书堆

    公共类主堆栈:BaseStack { 公共主服务器组(IViewService i_ViewService) :base(new NavigationProxy(new NavigationPage()),i_ViewService,eStack.Main,nameof(Views.eMain.Dashboard)) { ShowNavigationBar=true; }

        protected override void Map()
        {
            NavigationMap<DashboardView, DashboardViewModel>(nameof(Views.eMain.Dashboard));
            NavigationMap<BeaconsView, BeaconsViewModel>(nameof(Views.eMain.Beacons));
            NavigationMap<BeaconAddView, BeaconAddViewModel>(nameof(Views.eMain.AddBeacon));
            NavigationMap<BeaconEditView, BeaconEditViewModel>(nameof(Views.eMain.EditBeacon));
            NavigationMap<EventCreateView, EventCreateViewModel>(nameof(Views.eMain.CreateEvent));
            NavigationMap<EventsCreatedView, EventsCreatedViewModel>(nameof(Views.eMain.MyEvents));
            NavigationMap<EventsRegisteredView, EventsRegisteredViewModel>(nameof(Views.eMain.RegisteredEvents));
            NavigationMap<EventEditView, EventEditViewModel>(nameof(Views.eMain.EditEvent));
            NavigationMap<EventView, EventViewModel>(nameof(Views.eMain.ViewEvent));
            NavigationMap<AttendanceQrView, AttendanceQrViewModel>(nameof(Views.eMain.AttendanceQr));
            NavigationMap<JoinEventView, JoinEventViewModel>(nameof(Views.eMain.JoinEvent));
        }
    }
    
    受保护的覆盖无效映射()
    {
    导航地图(nameof(Views.eMain.Dashboard));
    导航地图(nameof(Views.eMain.Beacons));
    导航地图(nameof(Views.eMain.AddBeacon));
    导航地图(nameof(Views.eMain.EditBeacon));
    NavigationMap(nameof(Views.eMain.CreateEvent));
    导航地图(nameof(Views.eMain.MyEvents));
    导航地图(nameof(Views.eMain.RegisteredEvents));
    NavigationMap(nameof(Views.eMain.EditEvent));
    NavigationMap(nameof(Views.eMain.ViewEvent));
    导航地图(名称(Views.eMain.AttendanceQr));
    NavigationMap(nameof(Views.eMain.JoinEvent));
    }
    }
    
  • 如果要在单击链接时删除母版页,您会发现在IMasterDetailContainer中有一个名为IsPresented的属性。请将此设置为true或false,以手动显示或隐藏该页

  • 如果设置ContentPages的标题,这将替换所设置的任何默认标题

  • 确保该图标位于您的资源文件夹中。此外,如果它仍然未在iOS中显示,请将该图标设置为详细信息、导航或内容页。我不记得要将其设置为哪个。但是如果您尝试,您可以找到哪个图标有效


  • 我会尽量回答我能回答的问题。请把其他问题分出来,所以每个帖子有一个问题。