Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 汉堡包菜单棱镜沙马林表格?_C#_Xamarin_Xamarin.forms_Prism_Prism 6 - Fatal编程技术网

C# 汉堡包菜单棱镜沙马林表格?

C# 汉堡包菜单棱镜沙马林表格?,c#,xamarin,xamarin.forms,prism,prism-6,C#,Xamarin,Xamarin.forms,Prism,Prism 6,我正在尝试使用Xamarin表单中的Prism创建一个应用程序 Xamarin表单版本:2.3.3.175 棱镜版本:6.2.0 汉堡包菜单在Android中工作,但当我运行它时,它不会显示图标,而且当我在菜单中导航时,菜单完全消失,我也不会让该方法返回到其他页面。换句话说,我需要关闭并重新启动应用程序 这是我到目前为止试过的 创建prism项目后,我添加了一个MasterDetailPage: MasterDetailPage视图模型 public class MDPageViewM

我正在尝试使用Xamarin表单中的Prism创建一个应用程序

Xamarin表单版本:2.3.3.175

棱镜版本:6.2.0

汉堡包菜单在Android中工作,但当我运行它时,它不会显示图标,而且当我在菜单中导航时,菜单完全消失,我也不会让该方法返回到其他页面。换句话说,我需要关闭并重新启动应用程序

这是我到目前为止试过的

  • 创建prism项目后,我添加了一个MasterDetailPage:

    
    

  • MasterDetailPage视图模型

    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);
            }
        }
    
    公共类MDPageViewModel:BindableBase { 私人导航服务; 公共DelegateCommand NavigationCommand=>新DelegateCommand(导航); 公共MDPageViewModel(INavigationService导航服务) { _导航服务=导航服务; } 专用void导航(字符串页) { _navigationService.NavigateAsync(第页); } }
  • 之后,我创建了一个导航页面以及相应的页面和视图模型。以下是App.Xaml.cs文件:

    公共部分类应用程序:PrismApplication { 公共应用程序(IPlatformInitializer initializer=null):基(初始值设定项){}

    protected override void OnInitialized()
    {
    初始化组件();
    NavigationService.NavigateAsync(“MDPage/MyNavigationPage/ItemsPage”);
    }
    受保护的覆盖无效注册表类型()
    {
    Container.RegisterTypeForNavigation();
    Container.RegisterTypeForNavigation();
    Container.RegisterTypeForNavigation();
    Container.RegisterTypeForNavigation();
    Container.RegisterTypeForNavigation();
    }
    }
    
  • 因此,当我在UWP中运行应用程序时,它的加载方式如下

  • 但当我点击菜单中的链接时,菜单将消失,看起来是这样的

    我做错了什么,如何解决

    我在github中创建了一个项目,因此您可以轻松查看错误


    这只能部分回答您的问题。虽然Prism.Forms文档中记录了该图标,但我也无法看到它。要获取图标,请转到UWP项目中的App.Xaml,并在

    
    
    在顶部定义uwp前缀,如
    xmlns:uwp=“using:Xamarin.Forms.Platform”

    您的App.Xaml应该如下所示:

    
    


    完成此操作后,它将显示图标。但是,这将向您显示,单击主菜单中的某个项目后,菜单将崩溃。我无法修复此问题。

    这是Xamarin最新版本中的一个错误。它在使用2.3.1.114时有效。自从我遇到这个错误后,我就发布了这个错误。

    只需在MasterDetail代码中使用IMasterDetailPageOptions界面即可:

    public partial class ShellView : MasterDetailPage, IMasterDetailPageOptions
    {
        public ShellView()
        {
            InitializeComponent();
        }
    
        public bool IsPresentedAfterNavigation
        {
            get { return Device.Idiom != TargetIdiom.Phone; }
        }
    }
    

    当我尝试你提到的上述方法时,我犯了一些错误。我还在github中创建了一个项目,这样您就可以轻松地查看错误。
        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>();
        }
    }
    
    <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>
    
    public partial class ShellView : MasterDetailPage, IMasterDetailPageOptions
    {
        public ShellView()
        {
            InitializeComponent();
        }
    
        public bool IsPresentedAfterNavigation
        {
            get { return Device.Idiom != TargetIdiom.Phone; }
        }
    }