C# 汉堡包菜单棱镜沙马林表格?
我正在尝试使用Xamarin表单中的Prism创建一个应用程序 Xamarin表单版本:2.3.3.175 棱镜版本:6.2.0 汉堡包菜单在Android中工作,但当我运行它时,它不会显示图标,而且当我在菜单中导航时,菜单完全消失,我也不会让该方法返回到其他页面。换句话说,我需要关闭并重新启动应用程序 这是我到目前为止试过的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
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(第页);
}
}
protected override void OnInitialized()
{
初始化组件();
NavigationService.NavigateAsync(“MDPage/MyNavigationPage/ItemsPage”);
}
受保护的覆盖无效注册表类型()
{
Container.RegisterTypeForNavigation();
Container.RegisterTypeForNavigation();
Container.RegisterTypeForNavigation();
Container.RegisterTypeForNavigation();
Container.RegisterTypeForNavigation();
}
}
这只能部分回答您的问题。虽然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; }
}
}