在 Monomac/Xamarin C# 中创建无窗口菜单栏图标应用程序
Posted
技术标签:
【中文标题】在 Monomac/Xamarin C# 中创建无窗口菜单栏图标应用程序【英文标题】:Creating a windowless menu-bar icon application in Monomac/Xamarin C# 【发布时间】:2013-07-12 23:05:53 【问题描述】:我正在尝试在 MonoMac/Xamarin.Mac 中创建一个应用程序,该应用程序在启动时没有停靠图标,也没有可见窗口,并且在右上角的菜单栏中只有一个图标。
我在 Info.plist 中设置了 LSUIElement = 1(尝试了 String 和 Boolean 类型),但是在应用程序启动时根本不显示状态菜单图标。我可以让它出现的唯一方法是删除 LSUIElement 标志,尽管停靠图标变得可见。
我使用的sn-p是:
public partial class AppDelegate : NSApplicationDelegate
public AppDelegate ()
public override void FinishedLaunching (NSObject notification)
// Construct menu that will be displayed when tray icon is clicked
var notifyMenu = new NSMenu();
var exitMenuItem = new NSMenuItem("Quit",
(a,b) => System.Environment.Exit(0); ); // Just add 'Quit' command
notifyMenu.AddItem(exitMenuItem);
// Display tray icon in upper-right-hand corner of the screen
var sItem = NSStatusBar.SystemStatusBar.CreateStatusItem(30);
sItem.Menu = notifyMenu;
sItem.Image = NSImage.FromStream(System.IO.File.OpenRead(
NSBundle.MainBundle.ResourcePath + @"/menu_connected.png"));
sItem.HighlightMode = true;
// Remove the system tray icon from upper-right hand corner of the screen
// (works without adjusting the LSUIElement setting in Info.plist)
NSApplication.SharedApplication.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
有没有人知道在 MonoMac 中创建没有停靠图标而只有菜单栏图标的无窗口应用程序的好方法?
谢谢,
BB
【问题讨论】:
你碰巧还有@TheNextman 提供的解决方案吗?我正在拼命寻找一种方法来实现这一点。 【参考方案1】:尝试为“主 nib 文件名”指定 .xib
我前段时间做过这个,对我来说效果很好。像这样的:
新的 monomac 项目在 C# 中创建了一个“AppController”类:
[Register("AppController")]
public partial class AppController : NSObject
public AppController()
public override void AwakeFromNib()
var statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem(30);
statusItem.Menu = statusMenu;
statusItem.Image = NSImage.ImageNamed("f3bfd_Untitled-thumb");
statusItem.HighlightMode = true;
在 MainMenu.xib 中,我删除了应用程序菜单
在 MainMenu.xib 中,我添加了一个自定义对象并将其类型设置为AppController
我在 .xib 中创建了状态菜单,然后通过插座将其连接到 AppController
在 info.plist 中,我将“Application is agent (UIElement)”值添加为字符串并将其设置为“1”
用 .xib 试试。如果它不起作用,也许我可以分享我的项目让你拆开。
【讨论】:
如果您不介意分享,我很乐意看到一个示例。网上关于这个主题的内容不多,我也在为此苦苦挣扎。谢谢! @EliGassert 试试这个:pastelink.me/dl/395e5a#sthash.iEGMVNju.dpuf AppController 类型注册在示例中类顶部的Register
声明中。它可能不会显示在下拉列表中,但您可以直接输入。
抱歉,我没有示例项目可以发布
我创建了一个包含所有文件内容的公共要点。 gist.github.com/grexican/11252656 另外,这是一个 .zip 文件,我将保留在我的公共共享中,这样它就不会像其他下载链接一样过时:letscrate.com/f/toadsoftware/public/MacStatusMenuExample.zip以上是关于在 Monomac/Xamarin C# 中创建无窗口菜单栏图标应用程序的主要内容,如果未能解决你的问题,请参考以下文章