2016-12-19 12 views
2

Я пытаюсь создать приложение, используя призму в Xamarin Forms.гамбургер меню призма хамарин формы?

Xamarin Формы Версия: 2.3.3.175

Prism Версия: 6.2.0

меню гамбургер работает в Android, но когда я запускаю его UWP не будет отображаться значок, а также, когда я перемещаться по меню, меню полностью исчезает, и у меня не будет способа вернуться на другие страницы тоже. Другими словами, мне нужно закрыть и перезапустить приложение.

Вот что я пробовал до сих пор.

  1. После создания проекта призмы я добавил MasterDetailPage:

    <MasterDetailPage.Master> 
        <ContentPage Title="Default"> 
         <StackLayout> 
          <Button Text="Billing" Command="{Binding Path=NavigationCommand}" CommandParameter="MyNavigationPage/BillingPage"/> 
          <Button Text="Your Order" Command="{Binding Path=NavigationCommand}" CommandParameter="MyNavigationPage/PlaceOrderPage"/> 
          <Button Text="Settings" Command="{Binding Path=NavigationCommand}" CommandParameter="MyNavigationPage/SettingsPage"/> 
          <Button Text="Settings"/> 
         </StackLayout> 
        </ContentPage> 
    </MasterDetailPage.Master> 
    

MasterDetailPage ViewModel

public class MDPageViewModel : BindableBase 
    { 
     private INavigationService _navigationService; 


     public DelegateCommand<string> NavigationCommand => new DelegateCommand<string>(Navigation); 



     public MDPageViewModel(INavigationService navigationService) 
     { 
      _navigationService = navigationService; 

     } 

     private void Navigation(string page) 
     { 
      _navigationService.NavigateAsync(page); 
     } 
    } 
  1. После этого я создал навигационную страницу, а также соответствующие страницы и модели. Вот App.xaml.cs файл:

    общественный частичный класс App: PrismApplication { общественного App (IPlatformInitializer инициализатор = нуль): базовый (инициализатор) {}

    protected override void OnInitialized() 
        { 
         InitializeComponent(); 
    
         NavigationService.NavigateAsync("MDPage/MyNavigationPage/ItemsPage"); 
        } 
    
        protected override void RegisterTypes() 
        { 
         Container.RegisterTypeForNavigation<MDPage>(); 
         Container.RegisterTypeForNavigation<BillingPage>(); 
         Container.RegisterTypeForNavigation<PlaceOrderPage>(); 
         Container.RegisterTypeForNavigation<SettingsPage>(); 
         Container.RegisterTypeForNavigation<MyNavigationPage>(); 
        } 
    } 
    
  2. Так что, когда я бегу приложение в UWP он загружает как этот enter image description here

Но когда я нажимаю на ссылки в меню, меню исчезнет, ​​и это выглядит следующим образом.

enter image description here

Что я делаю неправильно и как я могу решить эту проблему?

Я создал проект в github, чтобы вы могли легко просмотреть сообщение об ошибке.

https://github.com/codemasterblackperl/Hamburger_Menu_Prism_Forms_Repo

ответ

2

Это ошибка в последней версии Xamarin. Он работает при использовании 2.3.1.114. Я опубликовал ошибку here, так как я просто столкнулся с этим.

0

Это будет отвечать только на ваш вопрос частично. Невозможность увидеть значок тоже меня, хотя он задокументирован в документах Prism.Forms. Для того, чтобы получить значок, перейдите на app.xaml в вашем UWP проекта и добавить следующий шаблон данных между <Application.Resources>...</Application.Resources>

<DataTemplate x:Key="ItemTemplate"> 
    <uwp:ItemControl HorizontalContentAlignment="Stretch" 
        VerticalContentAlignment="Stretch" /> 
</DataTemplate> 

Определить UWP префикс в верхней части, как xmlns:uwp="using:Xamarin.Forms.Platform"

You App.Xaml должен выглядеть примерно так:

<Application x:Class="MyApp.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:uwp="using:Xamarin.Forms.Platform"> 
<Application.Resources> 
    <DataTemplate x:Key="ItemTemplate"> 
     <uwp:ItemControl HorizontalContentAlignment="Stretch" 
         VerticalContentAlignment="Stretch" /> 
    </DataTemplate> 
</Application.Resources> 

После того, как вы сделали это, он будет отображаться значок. Однако это покажет вам, что после нажатия элемента в главном меню происходит сбой. Я не смог это исправить.

+0

Я получил некоторую ошибку, когда я попробовал выше метод вы упомянули. Также я создал проект в github, чтобы вы могли легко просмотреть ошибку. https://github.com/codemasterblackperl/Hamburger_Menu_Prism_Forms_Repo –

0

Просто используйте интерфейс IMasterDetailPageOptions в вашем MasterDetail кода позади:

public partial class ShellView : MasterDetailPage, IMasterDetailPageOptions 
{ 
    public ShellView() 
    { 
     InitializeComponent(); 
    } 

    public bool IsPresentedAfterNavigation 
    { 
     get { return Device.Idiom != TargetIdiom.Phone; } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^