2017-12-04 47 views
0

Mit .NET Core und Xamarin dachte ich darüber nach, eine Anwendung zu entwickeln, die sowohl auf Windows- als auch auf MacOS-Umgebungen läuft.Erstellen einer Tray-Anwendung mit Xamarin?

Der .NET Core-Teil wird für alle Backend-Komponenten verwendet und bietet seine Funktionalität als REST-API. .NET Core unterstützt jedoch nicht das Erstellen nativer UI-Anwendungen (WPF, ...), so dass Sie keine Tray-Anwendung erstellen können.

Also dachte ich über Xamarin dafür nach. Aber ich kann nicht herausfinden, ob das überhaupt möglich ist. Ich kann auch keine Hinweise darauf finden, wie ich anfangen soll.

Einige Alternativen habe ich noch nicht weiter untersucht:

  • Mono, aber das hat keine Integration mit VS2017 so dass aus ist ...
  • QT, aber das in C++ gerichtet ist, so das ist, wie gut
  • Java, aber warum dann in erster Linie ...
  • Electron.js

Antwort

1

für Windows .NET-Core stören, Xamarin.Forms unterstützt WPF offiziell nicht bis 3.0.

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

Im Sinne einer Tray-Anwendung, dh nativen Code von Windows und würde kein Teil Xamarin.Forms UI-Code sein, aber der nativen Code von Windows, die Benutzeroberfläche der App würde ein-/auszublenden (assumably Xamarin .Forms basierend)

Für Mac OS, Xamarin.Forms wird über Xamarin.Mac unterstützt, und ist derzeit in einer "Vorschau" Version.

Soweit es sich um eine Werkzeugablage-App auf macOS handelt, können Sie in Xamarin.Mac ein Element (Symbol und/oder textbasiert) in der Systemstatusleiste erstellen.

Typischerweise wird dies in den NSApplicationDelegate.DidFinishLaunching gemacht und ist einfach wie:

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

In diesem Beispiel jederzeit das Symbol/Text in dem Status abgegriffen wird, die StatusItemButtonAction Methode ausgelöst wird und es entweder beendet mich, wenn Sie haben gleichzeitig die Strg-Taste gedrückt, sonst läuft die StatusBarPopOver, die in meinem Fall eine NSPopover erstellt und eine eingebettete UI zeigt, die den Status des mobilen App-Servers, die aktuellen Benutzer der App, die App-Analyse usw. anzeigt ...

[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(); 
} 
Verwandte Themen