Welche GUI benutzt ihr?
-
Hallo,
ich bin dabei mich in C# einzuarbeiten (habe C & C++ programmiert).
Ich möchte einen schnellen Einstieg für kleine Win-Programme mit Oberfläche.
Welche GUI benutzt ihr - WinForms, WPF oder was anderes?
Welche Erfahrungen habt ihr damit gemacht?
-
WinForms: geringere Einstiegshürde, weniger was man falsch verstehen/falsch machen kann, weniger mächtig
WPF: höhere Einstiegshürde, VIEL was man falsch verstehen/falsch machen kann, viel mächtiger
-
Danke schon mal.
[quote="hustbaer"]WPF: höhere Einstiegshürde, VIEL was man falsch verstehen/falsch machen kann, viel mächtiger[/quote]
Ja, intuitiv bin ich mit WPF überhaupt nicht klar gekommen.
Gibt es dafür gute Tutorials?
Sind nur die Darstellungsmöglichkeiten größer, oder generieren die Controls auch mehr verschiedene Ereignisse?
Wie bekommt man das serielle Schnittstellen-Control bei WPF mit rein?
-
Es ist nach meiner Erfahrung ziemlich schwer, ein größeres WPF-GUI zu erstellen, das kein extrem träger, leckbehafteter Speicherfresser ist.
WinForms mag auf dem Stand von .NET 2.0 stehengeblieben sein, aber die nativen Win32-Controls haben diverse Vorteile (höhere Effizienz, stabil, immer richtiges Theming, accessibility for free, unterstützt für die Ewigkeit), die mir den gelegentlich höheren Aufwand wert sind.
In Windows 10 mag sich die Frage erneut stellen, mit welcher GUI-Bibliothek man denn zukünftig für Desktop-Windows programmieren sollte; aber die Antwort wird entweder WinRT sein (wenn Universal Apps dann auch für den Desktop taugen) oder Win32 (wenn es immer noch keine brauchbaren Alternativen gibt), jedenfalls aber nicht WPF.
-
Datensalat schrieb:
Ja, intuitiv bin ich mit WPF überhaupt nicht klar gekommen.
Gibt es dafür gute Tutorials?Gibt vermutlich welche, kann dir aber keins nennen.
Datensalat schrieb:
Sind nur die Darstellungsmöglichkeiten größer, oder generieren die Controls auch mehr verschiedene Ereignisse?
WPF ist mächtiger, so ziemlich in allen Belangen. Gibt einige Dinge die mit WPF lästiger sind, aber im Allgemeinen hast du mit WPF viel mehr Support vom Framework wo du "nur" mehr passendes XAML bzw. ein paar "kleine" Supportklassen schreiben musst.
Datensalat schrieb:
Wie bekommt man das serielle Schnittstellen-Control bei WPF mit rein?
... - öh ... ...hö? Was hat jetzt ne serielle Schnittstelle mit nem GUI Framework zu tun?
-
audacia schrieb:
jedenfalls aber nicht WPF.
Wobei es, wenn ich das richtig verstanden habe, mit WinRT recht ähnlich sein soll. Also ähnliche XAML Syntax/Elemente und ähnliche Klassenhierarchie.
-
audacia schrieb:
Es ist nach meiner Erfahrung ziemlich schwer, ein größeres WPF-GUI zu erstellen, das kein extrem träger, leckbehafteter Speicherfresser ist.
Wobei MS daran wohl gerade arbeitet...
"Performance: While WPF is actively being used to build large-scale, high performance applications like Visual Studio and Blend, further improving the performance of the platform based on customer feedback is a priority for us. Some key scenarios we are looking to optimize in this context are application startup, scrolling and virtualization performance of ItemsControls."
Davon abgesehen konnte ich das träge verhalten komplexerer GUIs bislang nur in wenigen Fällen nachvollziehen. Es gibt wohl einige potentielle Fettnäpfchen, die ich aber weitgehend umschifft zu haben scheine, vielleicht auch weil ich mich vorher auch über solche informiert habe. Bin aber seit einem halben Jahr weitgehend aus C# raus, da unsere Auftragslage derzeit alle Umstellungsversuche blockiert.
audacia schrieb:
In Windows 10 mag sich die Frage erneut stellen, mit welcher GUI-Bibliothek man denn zukünftig für Desktop-Windows programmieren sollte; aber die Antwort wird entweder WinRT sein (wenn Universal Apps dann auch für den Desktop taugen) oder Win32 (wenn es immer noch keine brauchbaren Alternativen gibt), jedenfalls aber nicht WPF.
Ich persönlich würde weiterhin auf WPF setzten, wie gesagt hatte ich bislang nur in Ausnahmefällen wirklich mal träges Verhalten feststellen können, aber WinRT mit dazu nehmen (Zumal es ähnlich wie WPF ist).
-
hustbaer schrieb:
Wobei es, wenn ich das richtig verstanden habe, mit WinRT recht ähnlich sein soll. Also ähnliche XAML Syntax/Elemente und ähnliche Klassenhierarchie.
Genau. Nur so effizient implementiert, daß es auch auf Windows Phone-Hardware flüssig läuft.
Deshalb ja auch meine Prognose für WPF. Es wird, wie jetzt schon die MFC, weiterhin halbherzig unterstützt. Aber wenn das mit den Universal Apps was wird, dann ist WPF obsolet.
Noch ein weiterer Vorteil von Win32-Controls fiel mir ein: über RDP werden nur die Zeichenkommandos geschickt. Bei WPF muß quasi ein Videostream übertragen werden.
-
Hatte zwischenzeitlich andere Dinge zu tun, deshalb erst jetzt...
Abschließend: Vielen Dank für eure reichhaltige Stellungnahme!
Gerade als "Frischling" ist man sich bei so einem weit reichenden Thema nicht sicher, möchte aber nicht gleich auf's "falsche Pferd" setzen.Jetzt kann ich mich beruhigt den WinForms zuwenden, die für meine Minianwendungen reichen werden.
-
Wenn man WinRT nutzt und mit c# arbeitet wie hier vom Threadersteller erwähnt dann hat er doch trotzdem mit XAML zu tun als "Darstellungslayer". Es ist, wenn ich mich recht erinnere, eher mit dem XAML von Silverlight zu vergleichen als mit dem von WPF aber dennoch einfach XAML.
Ich finde WPF eigentlich recht cool, ich finde es eher nervig das es schon wieder etwas neues gibt und man drei Möglichkeiten hat, jedoch irgendwie nur eine richtige. WinRT ersetzt ja nur die alte Win32 API.
-
MVPler schrieb:
WinRT ersetzt ja nur die alte Win32 API.
Leider eben gerade nicht
-
dazu ein schöner artikel
http://blogs.msdn.com/b/davidni/archive/2015/01/19/winrt-xaml-for-serious-beginners-where-are-we-navigating-win32-mfc-gdi-gdi-windows-forms-wpf-silverlight-windows-runtime-winrt-and-windows-phone.aspx
-
hustbaer schrieb:
MVPler schrieb:
WinRT ersetzt ja nur die alte Win32 API.
Leider eben gerade nicht
Wohl, Augenmerk auf "API". Du kommunizierst mit WinRT nicht mit Win32 (direkt "if").
-
Ich hatte WinRT eigentlich in der Mobil -ecke vermutet. Soll das mal Desktop-GUI a la WPF ersetzen? Oo
-
MVPler schrieb:
hustbaer schrieb:
MVPler schrieb:
WinRT ersetzt ja nur die alte Win32 API.
Leider eben gerade nicht
Wohl, Augenmerk auf "API". Du kommunizierst mit WinRT nicht mit Win32 (direkt "if").
Und ich meine: ich kommuniziere weiter mit der WinAPI, da über WinRT noch viel zu viel nicht erreichbar/machbar ist.
Ein vollwertiger Ersatz ist es für micht erst, wenn der überwiegende Grossteil aller Anwendungen damit gemacht werden können.
Was bei Desktop-Windows mMn. eben noch lange nicht gegeben ist.
-
Hallo,
ich bin dabei mich in C# einzuarbeiten (habe C & C++ programmiert).
Ich möchte einen schnellen Einstieg für kleine Win-Programme mit Oberfläche.Was benutzt du für ein Buch oder Tutorial ? Hab in nächster Zeit das gleiche vor...