我有Xamarin.Forms项目。 我在NavigationPage里面有MasterDetailPage。 我设置了MasterDetailPage的图标属性,以便将图标设置为导航栏上的左上角位置。但它不起作用。
public partial class App : Application
{
public App()
{
InitializeComponent();
var masterDetailpage = new MasterDetailPage {
Icon = "menuIcon.png",
Master = new Page { Title = "Sample"},
Detail = new Page()
};
MainPage = new NavigationPage(masterDetailpage);
}
}
这永远不会奏效。如果我将NavigationPage作为MasterDetailPage的Detail属性,并在Master上设置图标。有用。 但是在NavigationPage中包含MasterDetailPage非常重要,反之亦然。
答案 0 :(得分:5)
解决方案是设置Icon
用于Page
的{{1}}属性。
Master
这假设您的iOS项目中的png位于名为 var masterDetailpage = new MasterDetailPage {
Master = new Page { Title = "Sample", Icon = "menuIcon.png"},
Detail = new NavigationPage(new Page())
};
的Resources文件夹下,这是您想要的汉堡包图标。您还需要在menuIcon.png
周围使用NavigationPage
,因为导航栏区域中会显示Detail
。
答案 1 :(得分:2)
Unicode字符可用于显示“汉堡”菜单图标。
您可以为母版页面Title="☰"
顶层标签指定ContentPage
。
如果使用图标,则可以绘制比char更好的图标。但是,如果您可以接受,使用Unicode char就足够简单了。
它适用于iOS,不会破坏Android。
链接:
答案 2 :(得分:0)
如果您将母版页包装在导航页面中,请将该图标放在导航页面上。
这对我有用:
public partial class App : Application
{
public App()
{
InitializeComponent();
var masterDetailpage = new MasterDetailPage {
Icon = "menuIcon.png",
Master = new Page { Title = "Sample"},
Detail = new Page()
};
MainPage = new NavigationPage(masterDetailpage) { Title = "Sample", Icon = "menuIcon.png" };
}
}
答案 3 :(得分:0)
如果它对某人有帮助,您可以像下面的示例代码中一样在设置MainPage
之前设置菜单标题:
var master = new MasterPage();
master.Master.Icon = "my_icon.png";
master.Master.Title = AppResources.Menu; // To get the value from resource files
MainPage = master;
MasterPage
继承自MasterDetailsPage
,由于Xamarin的奇怪错误,我无法直接从MasterPage
的构造函数设置值。
答案 4 :(得分:-1)
我认为您必须添加AddDelegate
常见修复
namespace myApp.iOS
{
[Register("AppDelegate")]
public partial class AppDelegate :
global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
UIWindow window;
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
// fix for iOS
window = new UIWindow(UIScreen.MainScreen.Bounds);
window.RootViewController = App.GetMainPage().CreateViewController();
window.MakeKeyAndVisible();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
}
在App.xaml.cs
的PCL项目中,您必须添加
public App()
{
// The root page of your application
MainPage = GetMainPage();
}
public static Page GetMainPage()
{
return new RootPage();
}