使用 Xamarin 构建托盘应用程序?



使用.NET Core和Xamarin,我想构建一个可以在Windows和macOS环境中运行的应用程序。

.NET Core部分将用于所有后端内容,并作为REST API提供其功能。 但是,.NET Core 不支持构建本机 UI 应用程序(WPF,...),因此这是构建托盘应用程序的不行。

所以我考虑使用Xamarin来实现这一点。 但我似乎无法弄清楚这是否可能。 我也找不到任何关于如何开始的线索。

我还没有进一步调查的一些替代方案:

  • 单声道,但这与VS2017没有任何集成,所以已经出来了......
  • QT,但这针对的是C++,所以这也出来了
  • Java,但是为什么首先要使用.NET Core呢?
  • 电子.js

对于 Windows,Xamarin.Forms3.0之前不会正式支持 WPF。

回复:https://blog.xamarin.com/glimpse-future-xamarin-forms-3-0/

就托盘应用而言,这是本机Windows代码,不会是Xamarin.FormsUI代码的一部分,而是显示/隐藏应用的UI的本机Windows代码(假定基于Xamarin.Forms)

对于macOS,Xamarin.Forms通过Xamarin.Mac支持,目前处于"预览"版本中。

就macOS上的工具托盘应用程序而言,Xamarin.Mac您可以在系统状态栏中创建一个项目(基于图标和/或文本)。

通常,这是在NSApplicationDelegate.DidFinishLaunching中完成的,并且很容易:

statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem(NSStatusItemLength.Variable);
statusItem.Button.Image = new NSImage("moviemadness_icon_dark.png")
{
Template = true
};
statusItem.Button.Action = new Selector("StatusItemButtonAction:");

在此示例中,每当点击状态中的图标/文本时,都会触发StatusItemButtonAction方法,如果您同时按住控制键,它会自行终止,否则它会运行StatusBarPopOver,在我的例子中,该构造一个NSPopover并显示显示移动应用程序服务器状态的嵌入式Xamarin.FormsTabbedPageUI, 应用程序的当前用户,应用程序分析等...

[Action("StatusItemButtonAction:")]
public void StatusItemButtonAction(NSStatusBarButton sender)
{                                     
var currentEvent = NSApplication.SharedApplication.CurrentEvent;
if (currentEvent.ModifierFlags.HasFlag(NSEventModifierMask.AlternateKeyMask) || 
currentEvent.ModifierFlags.HasFlag(NSEventModifierMask.ControlKeyMask))
NSApplication.SharedApplication.Terminate(this);
else
StatusBarPopOver();
}

相关内容

最新更新