Eto: Fügen Sie ein Tray-Icon-Steuerelement hinzu

Erstellt am 7. März 2015  ·  33Kommentare  ·  Quelle: picoe/Eto

enhancement

Hilfreichster Kommentar

Wpf-Implementierung abgeschlossen:
wpf

Alle 33 Kommentare

Ja, es gibt eine NotifyIcon-Klasse im .Net-Framework, aber ich konnte sie nicht richtig verwenden.

"Das allgemeine NotifyIcon ist nicht sichtbar, wenn Sie einen Standard-KDE-Desktop ausführen;
es erfordert ein Gnome Panel namens Notification Area Applet"
http://www.codeproject.com/Articles/466805/AmberIndicator-a-systray-app-under-Linux

"Unter openSUSE, Fedora und Ubuntu ist NotifyIcon nicht nutzbar"
https://bugzilla.novell.com/show_bug.cgi?id=590093

"NotifyIcon erscheint nicht im Systray (Getestet auf OS: Fedora, Arch. DE: MATE, Cinnamon)"
https://bugzilla.xamarin.com/show_bug.cgi?id=14976

Es sollte etwas mehr mit DBus integriert werden.

Die Grundidee besteht darin, ein Symbol im Infobereich zu erstellen
ist weniger lästig als das Öffnen eines Dialogs (der Dialog unterbricht die aktuelle Arbeit und das Symbol kann vom Benutzer für einige Zeit ignoriert werden). Das Symbol ist jedoch auch schwerer zu erkennen, daher gibt es eine Funktion, mit der Taskleistensymbole kleine Sprechblasen anzeigen können (kann die Sprechblase Bilder oder Videostreams von der Eingangstürkamera enthalten oder nur Zeichenfolgen anzeigen?). Dies bedeutet insbesondere, dass der Ballon nach einiger Zeit verschwinden sollte (aber der Rigo-Manager macht einen Fehler - er erfordert, dass der Benutzer den Ballon manuell schließt).

Es gibt auch _Workspace Switcher Applet_, das sich gut über DBus integrieren lässt. Anwendungsszenario - MDI-Programme, die unterschiedliche Dokumentensätze auf unterschiedlichen Arbeitsbereichen anzeigen sollen. Ich habe eine weitere Funktionsanfrage für Arbeitsbereiche erstellt – https://github.com/picoe/Eto/issues/409

„Die GNOME-Taskleiste kann horizontal oder vertikal sein“

"Die Taskleiste koordiniert Sprechblasenmeldungen, um sicherzustellen, dass sie ein einheitliches Erscheinungsbild haben, und um zu vermeiden, dass mehrere Sprechblasenmeldungen gleichzeitig angezeigt werden. ... Systemablagen können Teile von Nachrichten von mehreren Taskleistensymbolen gleichzeitig empfangen, dies ist erforderlich um die Nachrichten basierend auf der Fenster-ID des Taskleistensymbols neu zusammenzusetzen.... Eine Sprechblasennachricht ist eine kurze Textnachricht.... Die Nachricht kann eine Zeitüberschreitung haben; wenn dies der Fall ist, wird die Nachricht nach Ablauf der Zeitdauer entfernt. ...Das Taskleistensymbol möchte möglicherweise eine zuvor gesendete Sprechblasennachricht abbrechen."

monos NotifyIcon im Benachrichtigungsbereich

einige URLs:

  1. GNOME-Richtlinien für die Benutzeroberfläche 2.2.3 Desktop-Integration
    https://developer.gnome.org/hig-book/unstable/desktop-notification-area.html.en
  2. Spezifikation des Taskleistenprotokolls
    http://standards.freedesktop.org/systemtray-spec/latest/
  3. Handbuch der Konventionen für die Kommunikation zwischen Clients
    http://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html
  4. XEmbed Protocol Specification (Protokoll zum Einbetten von Toolkit-Widgets)
    http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
  5. Erweiterte Window-Manager-Tipps
    http://standards.freedesktop.org/wm-spec/wm-spec-latest.html
  6. System.Windows.Forms.NotifyIcon (MSDN)
    https://msdn.microsoft.com/ru-ru/library/system.windows.forms.notifyicon%28v=vs.110%29.aspx
  7. NotifyIcon-Implementierung in Mono
    https://github.com/mono/mono/blob/ef380e3712af86ef7f8064fab19400523c7510c0/mcs/class/System.Windows.Forms/System.Windows.Forms/NotifyIcon.cs#L38
  8. Beispiele für das NotifyIcon von Mono
    https://github.com/mono/winforms/blob/master/notifyicon/swf-notifyicon.cs
    https://github.com/mono/winforms/blob/master/notifyicon/swf-balloon.cs
  9. KeePass verwendet NotifyIcon:
    http://sourceforge.net/p/keepass/bugs/1212/
  10. Gtk#-Beispiel
    http://www.mono-project.com/docs/gui/gtksharp/widgets/notification-icon/
    Gtk.StatusIcon
    http://askubuntu.com/questions/13197
    https://developer.gnome.org/gtk3/stable/GtkStatusIcon.html

Laut GNOME HIG gibt es zwei Möglichkeiten, ein Symbol zum Bedienfeld hinzuzufügen:
panels-and-area

A. Das Panel-Applet (diese sind links von "Wanda-the-fish")
B. Benachrichtigungsbereichssymbol (Das Benachrichtigungsfeld selbst wird dem Bedienfeld als Bedienfeldappet hinzugefügt)

Mono implementiert das "Notification area icon" über der X11-Spezifikation (direkt, ohne Gtk#).

mono verwendet die XplatUI-Schnittstelle mit Methoden
SystrayAdd, SystrayRemove, SystrayChange, SystrayBalloon, SendMessage, SetForegroundWindow
https://github.com/mono/mono/blob/ef380e3712af86ef7f8064fab19400523c7510c0/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUI.cs#L1106-L1128
Die Anrufe werden an das Mitglied weitergeleitet

 static XplatUIDriver driver;

was ist vom typ ??? für MATE-Umgebung.

Ich weiß nicht, was den zu verwendenden Treiber auswählt. Wahrscheinlich ist es XplatUIX11, das in dieser Zeile ausgewählt wird:
https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUI.cs#L112

Tray-Icon ist ein Fenster

Das Taskleistensymbol ist ein Fenster, das in die Taskleiste eingebettet wird.

interne Klasse NotifyIconWindow : Form { ... // line 57
privates NotifyIconWindow-Fenster; // Zeile 45
window = new NotifyIconWindow(this); // Zeile 389
XplatUI.SystrayAdd(window.Handle, text, icon, out tooltip); // Zeile 524

Problem beim Zeichnen:
https://bugzilla.novell.com/show_bug.cgi?id=324237#c13
"Auf 64-Bit-Rechnern wird das Symbol überhaupt NICHT in der Taskleiste angezeigt."

Transparenzproblem:
http://lists.ximian.com/pipermail/mono-winforms-list/2007-December/003173.html
Der Grund des Problems ist die Zeile 189
(Dies ist ein nicht behobener Fehler mit 8 Jahren Geschichte)
Der Anhang in der Mailinglistennachricht enthält jedoch einen Beispielcode für die Anwendung.
siehe auch
http://standards.freedesktop.org/systemtray-spec/latest/ar01s06.html

Problem beim Neuzeichnen:
http://mono.1490590.n4.nabble.com/NotifyIcon-and-ContextMenu-redrawing-issues-in-gnome-td1541474.html
https://bugzilla.novell.com/show_bug.cgi?id=324237
https://bugzilla.novell.com/show_bug.cgi?id=MONO81668

_NET_SYSTEM_TRAY_S

Die Konventionen für die Auswahl von Managern sind im ICCCM definiert ( http://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html#manager_selections ).
Die Taskleiste ist ein X-Client, der eine spezielle Managerauswahl auf einem bestimmten Bildschirm besitzt.
Eine Anwendung, die ein Symbol für die Taskleiste bereitstellen möchte, sollte zuerst die Taskleiste lokalisieren
durch Aufrufen des Besitzerfensters der Managerauswahl.
Wenn die Managerauswahl keinen Besitzer hat, können Clients die in ICCCM beschriebene Methode (Überwachen auf eine MANAGER-Client-Nachricht) verwenden, um benachrichtigt zu werden, wenn ein Systemtray erscheint.

Das Auswahlbesitzerfenster ist nicht dasselbe wie eines der vom Benutzer sichtbaren Fenster, die von der Taskleiste bereitgestellt werden (mit anderen Worten - die Managerauswahl ist wahrscheinlich nicht dasselbe Fenster, das die Taskleistensymbole enthält), da das Auswahlbesitzerfenster sollten vernichtet werden, wenn die Managerauswahl verloren geht.

die Taskleiste muss eine Manager-Auswahl namens _NET_SYSTEM_TRAY_Sn ​​erhalten, wobei n durch die Bildschirmnummer ersetzt wird, die die Taskleiste verwenden möchte:

  • https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUIX11.cs#L729

XGrabServer(DisplayHandle); SystrayMgrWindow = XGetSelectionOwner(DisplayHandle, _NET_SYSTEM_TRAY_S); XUngrabServer(DisplayHandle); XFlush(DisplayHandle);

  • https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms.X11Internal/X11Display.cs#L345

Xlib.XGrabServer (display); IntPtr SystrayMgrWindow = Xlib.XGetSelectionOwner (display, Atoms._NET_SYSTEM_TRAY_S); Xlib.XUngrabServer (display);

SYSTEM_TRAY_REQUEST_DOCK

das Nachrichtenformat ist hier beschrieben:
http://standards.freedesktop.org/systemtray-spec/latest/ar01s04.html
Ist es möglich, X-Nachrichten zu senden, ohne Xlib und die zugrunde liegende XCB-Bibliothek zu verwenden?
dh direkt von C#-Code zu "wire"?

https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUIX11.cs#L6259

    SendNetClientMessage(SystrayMgrWindow, _NET_SYSTEM_TRAY_OPCODE, IntPtr.Zero, (IntPtr)SystrayRequest.SYSTEM_TRAY_REQUEST_DOCK, hwnd.whole_window);

https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms.X11Internal/X11Display.cs#L413-L417

    SendNetClientMessage (SystrayMgrWindow,
        Atoms._NET_SYSTEM_TRAY_OPCODE,
        IntPtr.Zero,
        (IntPtr)SystrayRequest.SYSTEM_TRAY_REQUEST_DOCK,
        hwnd.WholeWindow);

Symbol als Panel-Applet

https://en.wikipedia.org/wiki/D-Bus
D-BUS ist ein Interprozess-Kommunikationssystem (IPC), das einen einfachen, aber leistungsstarken Mechanismus bereitstellt, mit dem Anwendungen miteinander kommunizieren, Informationen austauschen und Dienste anfordern können.
"D-BUS kann zu einem einheitlichen und agnostischen IPC-Mechanismus werden, der von beiden Desktops (GNOME und KDE) verwendet wird"
_aber, aber, aber - ICCCM ist auch prozessübergreifend, einheitlich und agnostisch..._
siehe The Kernel Event Layer - DBus Ein einzelner Bus, der vom gesamten System gemeinsam genutzt wird, ermöglicht die Weitergabe von Ereignissen vom Kernel bis zu den obersten Anwendungen im System.
Ereignisse wie eine volle Festplatte und eine leere Druckerwarteschlange oder sogar ein niedriger Batteriestand können den Systemstapel aufblähen, der für jede Anwendung verfügbar ist, sodass das System reagieren und reagieren kann.

  1. Die D-Bus-Spezifikation
    http://dbus.freedesktop.org/doc/dbus-specification.html

  2. DBus-Bibliothek für C# (kein Wrapper, reines C#)
    https://github.com/mono/dbus-sharp

  3. Panel Applet Library Referenzhandbuch
    https://developer.gnome.org/panel-applet/stable/

  4. GnomeGoal soll alle Gnome-Applets auf die neue DBUS-API (von Bonobo) portieren.
    https://wiki.gnome.org/Initiatives/GnomeGoals/AppletsDbusMigration

Gibt es so etwas wie Ubuntu-Panel-Applets?

Kompatibilität zwischen Gnome und Unity-Panel (Applet).
http://ubuntu.itsprite.com/ubuntugnome-vs-unity-panel-applet-compatibility/

Anwendungsindikatoren
( Ayatana , Einheit, Ubuntu)

Status-Notifier-Spezifikation (SNI, org.freedesktop.StatusNotifierItem)
http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/
"Es soll ein Ersatz für die Freedesktop System Tray-Spezifikation sein ...
es wird in der Produktion mindestens von KDE Plasma und Unity verwendet"

  1. Anzeigen im Anwendungsbereich
    https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators

libappindicator-Referenzhandbuch
http://developer.ubuntu.com/api/devel/ubuntu-12.04/c/appindicator/

Ayatana-Indikatoren im Gnome-Panel:
https://launchpad.net/indicator-applet

Es gibt ein Panel-Applet für MATE:
https://github.com/mate-desktop/mate-indicator-applet
Informationen aus verschiedenen Anwendungen konsistent im Panel anzuzeigen.

Benachrichtigungssymbol in Ubuntu mit Unity und Mono C#-Beispiel:
http://www.arvydas.co.uk/2012/08/notification-icon-in-ubuntu-with-unity-and-mono-c-sharp-example/

Jeder Indikator installiert eine kleine Datei in /usr/share/unity/indicators, die definiert, wo er auf DBus zu finden ist und wie er im Panel angezeigt werden soll. Der Indikatorprozess wird vom Session-Init-Daemon verwaltet.

Spezifikation für Desktop-Benachrichtigungen
http://www.galago-project.org/specs/notification/0.9/index.html
" Bilder können in die Benachrichtigung eingefügt werden, aber dies sollte mit Vorsicht erfolgen. Das Bild sollte nie größer als 200 x 100 sein, aber dies sollte als maximale Größe betrachtet werden."

https://wiki.ubuntu.com/MessagingMenu/

So machen Sie das Menüfenster transparent:
http://www.linuxandlife.com/2012/05/ubuntu-panel-transparent.html

"Indikatoren können im Panel nur eine Beschriftung oder ein Symbol enthalten
kein benutzerdefiniertes Rendering oder andere Widgets"
Anwendungsindikatoren verwenden eine feste Symbolgröße von 22 Pixel.
https://bugs.launchpad.net/ubuntu/+source/indicator-application/+bug/533439
"Die Libindicator-API erlaubt nicht die Angabe der Symbolgröße und
Daher ist die Konvention, dass alle Symbolgrößen 22 Pixel betragen."

Ändern und aktualisieren Sie das Statussymbol eines laufenden Anzeige-Applets
http://www.helptouser.com/ubuntu/11162-is-it-possible-to-änder-and-update-the-status-icon-of-a-running-indicator-applet.html

Das Taskleisten-Widget (Plasma/KDE)

  1. Das Taskleisten-Widget zeigt Systeminformationen, Benachrichtigungen und Dienste an
    https://userbase.kde.org/Plasma/SystemTray

xeingebettete Elemente sind fest auf 22×22 Pixel codiert

Status-Notifier-Spezifikation, KStatusNotifierItem-Klasse
https://github.com/lxde/lxqt/issues/359

März 2014-03-04, Taskleiste in Plasma Next
http://blog.martin-graesslin.com/blog/2014/03/system-tray-in-plasma-next/

"Wir wollen keine Zeit in die Implementierung des Legacy-Systems (xembed) für Plasma Next investieren"
„Die meisten GTK+-Anwendungen verwenden auch die Appindicator-Bibliothek für die Unity-Integration, sodass sie einfach so funktionieren, wie wir es wollen.“
"Obwohl es bis Qt 5.4 dauern wird, bis das Feature richtig funktioniert."
"Es ist möglich, dass es Anwendungen gibt, die noch das Legacy-Protokoll verwenden und das kaputt geht."

Nachrichtenleiste der GNOME-Shell

https://wiki.gnome.org/Design/OS/MessageTray
"Die Designseiten des Message Tray sind veraltet und werden nur zu Referenzzwecken aufbewahrt. Aktuelle Designs finden Sie auf der Benachrichtigungsseite."
https://wiki.gnome.org/Design/OS/Notifications

Es gibt auch "Indicator Applet" von Drittanbietern für Gnome 3 in den Repositories von Ubuntu:
https://code.launchpad.net/~jconti/indicator-applet/gnome3

http://live.gnome.org/GnomeShell/Extensions

Die GNOME-Shell ermöglicht eine sehr begrenzte Anpassung (by design) und die Taskleiste ist keiner dieser Bereiche. Tatsächlich dient die Tatsache, dass es existiert, nur dazu, bestimmte Legacy-Anwendungen zu unterstützen.

"Systray-Icons werden als häufige Ablenkungsquelle angesehen, die die Entwickler loswerden wollen."

„Wenn wir das Problem richtig angehen wollen, müssen wir eine neue API einrichten und den Anwendungen Zeit geben, darauf zu portieren. Wir arbeiten derzeit an einem Plan dafür.“

http://worldofgnome.org/shell-new-notifications-goodbye-message-tray/
2014-01-05, "GNOME-Entwickler planen einige bedeutende Änderungen hin zu einem komplett neuen Benachrichtigungssystem."

https://blogs.gnome.org/aday/2014/06/18/a-notifications-update/
Fedora 22 (GNOME 3.16) hat diese erweiterbare Legacy-Symbolleiste in der unteren linken Ecke des Bildschirms eingeführt:

Veraltete "Tray"-Symbole werden in einer "Schublade" angezeigt, die Autohide in der unteren linken Ecke des Bildschirms verwendet.
Versionshinweise zu Gnome 3.16

https://github.com/gnome-design-team/gnome-mockups/tree/master/notifications

gnome-design oder #gnome-shell IRC-Kanäle

https://developer.gnome.org/notification-spec/

WingPanel von Elementary OS

Stilvolles oberes Bedienfeld, das Anzeigen enthält und einen Anwendungsstarter erzeugt

elementares Betriebssystem, das Ayatana-Indikatoren ablehnt:
https://github.com/dyson/indicator-workspaces/issues/3

Diese neuen Indikatoren haben ein bisschen mehr Freiheit (Sie sind nicht auf ein Menüdesign beschränkt, können jetzt jedes Widget darin haben), also sollten Sie darauf achten. ;) Ayatana-Indikatoren werden weiterhin technisch unterstützt

Ein Beispiel für die Arbeit mit Panels ist die Workrave-Anwendung.
es hat eine Klasse für jeden Panel-Typ.
dort sind https://github.com/rcaelers/workrave/tree/7cb9aef971f21c9a473146f9b72693b86a4a76f6/frontend/applets
"zimt", "common", "gnome-shell", "gnome2", "gnome3", "indicator", "mate", "win32", "xfce"

Kann jemand meine einfachen Fragen beantworten?

1) Können wir jetzt Tray-Icons mit Eto erstellen?
2) Welche Betriebssysteme werden unterstützt?
3) Wo kann ich das nachlesen? Vielleicht Klassenname?

Schlechte Nachrichten, immer noch kein Support, gute Nachrichten, ich wollte das über dieses Wochenende für Linux und Windows implementieren :)

Wirklich cool! :) Ist jetzt nur Merge erforderlich?

Und MAC-OS?

Ich glaube nicht, dass wir Tray-Emulation in Android brauchen :)

Wirklich cool! :) Ist jetzt nur Merge erforderlich?

Ich habe immer noch nicht angefangen, daran zu arbeiten ... aber ich weiß, was getan werden muss, und ich musste vorher # 714 erledigen.

Und MAC-OS?

Jemand anderes muss es für MacOS implementieren, das einzige MacOS, das ich habe, ist auf einer VirtualBox, die verdammt langsam ist.

Linux Gtk-Version fast fertig :D

indicator

Gute Arbeit! :)

Ist es ein normales Fenster oder ein Popup mit begrenztem Inhalt erlaubt?

Gute Arbeit! :)

Ist es ein normales Fenster oder ein Popup mit begrenztem Inhalt erlaubt?

So sieht das Kontextmenü auf GNOME mit der Erweiterung libappindicator auf :P aus

Ohne die seltsamen Erweiterungen, die ich auf meinem System habe, sieht es so aus:

withoutextension

So sieht das Kontextmenü auf GNOME mit der Erweiterung libappindicator auf :P aus

Ich bin mir nicht sicher, ob ich das verstehe ... Ich habe erwähnt, ob es möglich ist, dort Inhalte anzuzeigen, z. B. Bilder anstelle von Hello World? Zum Beispiel können wir das in Windows nicht machen (nur Menüpunkte mit Symbolen). Um das zu bekommen, müssen wir ein eigenes Fenster implementieren und es in der Nähe des Taskleistensymbols oder Mausklicks anzeigen. Außerdem müssen wir Koordinaten übersetzen, da das Taskleistensymbol (das höchstwahrscheinlich verwendet wird) Teil von Windows.Forms und nicht von WPF ist.

Nochmals ... so sieht ein Kontextmenü auf meinem System aus ... sehen Sie sich den zweiten Screenshot an, er zeigt genau das Gleiche, außer dass ein Teil meines Themas deaktiviert ist.

@hardhub afaik, Sie können benutzerdefinierte Steuerelemente mit Winforms (und MacOS) in einen Menüpunkt einfügen. Ich weiß aber nicht, ob das auf GTK# funktionieren würde.

@cwensley Ich muss dazu nur eine negative Sache melden, Appindicator erlaubt das Laden von Symbolen aus dem Speicher nicht ... also musste ich Etos API für TrayIcon dazu bringen, es von einem tatsächlichen Dateipfad zu laden ...

@cra0zy Nun , das ist ziemlich scheiße. Vielleicht können wir in eine temporäre Datei oder so etwas schreiben.

@cwensley ,

Ich meine das:
https://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon (v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.windows.forms.menuitem (v=vs.110).aspx

Sie können dort nur Text und Symbol einfügen ...

@cra0zy Nun , das ist ziemlich scheiße. Vielleicht können wir in eine temporäre Datei oder so etwas schreiben.

Das habe ich bereits getan.

@hardhub ah richtig, es verwendet MenuItem , nicht ToolStripMenuItem .. ugh. In jedem Fall können wir die benutzerdefinierte Fensterfunktion einfach in die Windows-Plattform einbauen, sodass sie nicht manuell implementiert werden muss, wenn Sie sie verwenden möchten.

Reden Sie von einem Linksklick-Fenster, wie es der Lautstärkemixer in Windows 7 war? Ich bin etwas verwirrt...

Wie auch immer, das Folgende ist die Struktur der API:
```c#
public bool Sichtbar { erhalten; einstellen; }

öffentlicher String Titel { erhalten; einstellen; }

öffentliches Ereignis aktiviert { get; einstellen; }

public void SetMenu (Kontextmenü-Menü);

public void SetIcon(Icon-Icon);

öffentlich void Show();

öffentlich void Hide();
```

@cra0zy , ich denke, ein Linksklick öffnet ein benutzerdefiniertes Fenster. Ich schrieb über Rechtsklick. Zumindest sieht Ihr Beispiel mit dem Element "Beenden" wie ein Rechtsklickmenü aus.

@cwensley

Wir können versuchen, die ContextMenuStrip-Eigenschaft zu verwenden ... aber ich denke, es wird nichts Benutzerdefiniertes hinzufügen können ...
https://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenustrip (v=vs.110).aspx

Ich denke, Sie haben erwähnt, dass wir Bilder links vom Menüelement hinzufügen können ... ja, das können wir ... aber ich sagte über das benutzerdefinierte Layout des Popups, das in der Taskleiste verfügbar ist. Ich habe das Bild als benutzerdefinierten Inhalt erwähnt, nicht als ein kleines Symbol links vom Element.

WinForms-Implementierung abgeschlossen:
winforms

Gtk Mac/Windows-Implementierung abgeschlossen:
2

Wpf-Implementierung abgeschlossen:
wpf

PR aufwärts: #731

@cwensley Dies kann geschlossen werden.

@cra0zy muss noch einen Mac-Port machen, aber das ist mit #750 abgedeckt

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen