微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Xamarin中设计滑出菜单

如何解决如何在Xamarin中设计滑出菜单

大家早上好 我是xamarin.forms的新手,并且我正在使用Visual Studio 2017开发跨平台的移动苹果。

我创建了一个主详细信息页面,以便可以使用幻灯片导航菜单

幻灯片导航有效,但我需要对其进行增强。

下面是我所做的事情的屏幕截图

image outut form code below

下面是我的代码

<MasterDetailPage  xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
               Title="first page"
         x:Class="HelloWorld.ContactPage" IsPresented="True">
<MasterDetailPage.Master>
    <ContentPage  Padding="0,20,0" Title="Contact">
        <Image Source="icon.png"/>
        <ListView   x:Name="ListView" ItemSelected="ListView_ItemSelected">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <!--<TextCell  Text="{Binding Name}" Detail="{Binding Status}"  />-->
               
                    <TextCell  Text="{Binding Name}" Detail="{Binding Status}"  />
                </DataTemplate>
            </ListView.ItemTemplate>

        </ListView>
    </ContentPage>
</MasterDetailPage.Master>

<MasterDetailPage.Detail>
    <ContentPage>
        <Image Source="icon.png"/>
    </ContentPage>
</MasterDetailPage.Detail>
  public partial class ContactPage : MasterDetailPage
{
    public ContactPage()
    {
        InitializeComponent();
        ListView.ItemsSource = new List<Contact>
        {
            new Contact{Name = "Home",ImageUrl = "http://lorempixel.com/1920/1080/sports/1"},new Contact{Name = "About",ImageUrl = "http://lorempixel.com/1920/1080/sports/2",Status = "feelgood"}
        };
    }

  //  async void ListView_ItemSelected(object sender,selecteditemchangedEventArgs e)
      void ListView_ItemSelected(object sender,selecteditemchangedEventArgs e)
    {

        var contact = e.SelectedItem as Contact;
        if (contact.Name == "Home")
        {
            Detail = new NavigationPage(new GreetPage());
        }
        else
        {
            Detail = new NavigationPage(new ContactDetailPage(contact));
        }
       
        IsPresented = false;

        // if (e.SelectedItem == null)
        //     return;
        // var contact = e.SelectedItem as Contact;
        //await Navigation.PushAsync(new ContactDetailPage(contact));
        // ListView.SelectedItem = null;
    }
}

下面是我预期的输出图像

Expected Image output

解决方法

实际上,您的问题不是直截了当的,但我应该能够回答。 您需要塞东西才能完成任务。

  1. 创建模型

  2. 使用模板创建Masterdetail

  3. 创建幻灯片页面。 删除所有随附的页面,例如MasterDetailPageMaster,MasterDetailPageDetail和MasterDetailPageMenuItem。之后,将“ MasterDetailPage”更改为MainPage。

         <MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
                      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                      x:Class="MobileHMO.MainPage"
                      xmlns:pages="clr-namespace:MobileHMO">
             <MasterDetailPage.Master>
                 <ContentPage Title="Menu"
                          BackgroundColor="#e8e8e8">
    
                     <StackLayout Orientation="Vertical">
    
                         <StackLayout.Children >
                             <Label HorizontalTextAlignment="Center" Text="{Binding Header}" />
    
                             <Image HeightRequest="150" Source="{Binding Image}" Aspect="Fill" />
    
                             <Label HorizontalTextAlignment="Center" Text="{Binding Footer}" />
                         </StackLayout.Children>
    
                         <ListView x:Name="navigationDrawerList"
                           RowHeight="55"
                           SeparatorVisibility="Default"
                           BackgroundColor="#e8e8e8"
                           ItemSelected="OnMenuItemSelected">
    
                             <ListView.ItemTemplate>
                                 <DataTemplate>
                                     <ViewCell>
    
    
                                         <StackLayout VerticalOptions="FillAndExpand"
                                      Orientation="Horizontal"
                                      Padding="20,10,10"
                                      Spacing="20">
    
                                             <Image Source="{Binding Icon}"
                                  WidthRequest="40"
                                  HeightRequest="40"
                                  VerticalOptions="Start" />
    
                                             <Label Text="{Binding Title}"
                                  FontSize="Small"
                                  VerticalOptions="End"
                                  TextColor="Black"/>
                                         </StackLayout>
                                     </ViewCell>
                                 </DataTemplate>
                             </ListView.ItemTemplate>
                         </ListView>
    
                     </StackLayout>
    
                 </ContentPage>
             </MasterDetailPage.Master>
    
             <MasterDetailPage.Detail>
                 <NavigationPage>
    
                 </NavigationPage>
             </MasterDetailPage.Detail>
         </MasterDetailPage>
    

    公共局部类MainPage:MasterDetailPage { 私有列表menuList;

     public MainPage()
     {
         InitializeComponent();
         menuList = new List<MasterPageItem>();
    
    
         var page1 = new MasterPageItem() { Title = "Enrollee Profile",Icon = "enrollee.jpg",TargetType = typeof(view) };
         var page2 = new MasterPageItem() { Title = "Dependants",Icon = "dependant.jpg",TargetType = typeof(view2) };
         var page3 = new MasterPageItem() { Title = "Bill Limit",Icon = "bills.jpg",TargetType = typeof(view3) };
         };
    
         menuList.Add(page1);
         menuList.Add(page2);
         menuList.Add(page3);
         menuList.Add(page4);
         menuList.Add(page5);
         menuList.Add(page6);
         menuList.Add(page7);
         menuList.Add(page8);
         menuList.Add(page9);
    
         // Setting our list to be ItemSource for ListView in MainPage.xaml
         navigationDrawerList.ItemsSource = menuList;
         // Initial navigation,this can be used for our home page
         Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(EnrolleeProfile)));
         this.BindingContext = new
         {
             Header = " Mobile",Image = "rina.png",//Footer = "         -------- Welcome   --------           "
             Footer = "Welcome "
         };
     }
    

    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?