WPF - Wie geht das?

  • WPF

Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von KingTimon.

    Artentus schrieb:

    ja, gibt es. Dank XAML ist es möglich, in Handumdrehen optisch ansprechende Designs zu erstellen, ohne auch nur eine Zeile Code zu schreiben, und das ohne Verlust von Funktionalität. AUßerdem wird durch dieses Modell auch redundanz vermieden, weil Designs global angewendet und Steuerelemente beliebig geschachtelt werden können.Dazu kommt dann noch, dass WPF-Anwendungen mit DirectX und damit vollständig hardwarebeschleunigt gerendert werden, dies entfaltet seine Wirkung aber erst wirklich, wenn man grafisch anspruchsvolle Anwendungen entwickelt.

    Optisch ansprechende Designs, kann man die nicht mit Windows-Forms genauso erstellen? Da brauch ich auch keine einzige Zeile Code zu schreiben, es gibt ja den Designer, oder verstehe ich die Aussage nicht richtig?
    Eine grafisch anspruchsvolle Anwendung hab ich ebenfalls nicht vor zu proggen.

    @ErfinderDesRades

    Dass man mit WPF sein Programm besser strukturieren kann, hab ich schon mitbekommen.
    Und die Controls sind mir auch eigentlich weniger wichtig, da ich alles mit Win-Forms bis jetzt genauso erreicht habe. Und ich bin der Meinung, dass ich Win-Forms Controls besser machen könnte, als WPF, da ich schon fast 2 Jahre Erfahrung damit hab.

    Wenn meine Aussage dazu völlig falsch ist, möge man mich bitte korrigieren :)
    Auf der Suche nach Coding-Kursen auf Lence.at

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KingTimon“ ()

    KingTimon schrieb:

    oder verstehe ich die Aussage nicht richtig?
    Vermutlich.
    Hier mal ein Beispiel einer meiner in der Entwicklung befindlichen Anwendungen:

    Ich denke nicht, dass du das mit WinForms mal schnell hinbekommst, und schon gar nicht mit guter Performance.

    Und ich bin da auch anderer Meinung als der Erfinder, ein gutes Design ist elementarer Bestandteil einer benutzerfreundlichen Anwendung. Muss nichts aufwändiges sein, Microsoft hat uns in dieser Hinsicht ja genügend minimalistische Vorlagen geliefert.

    ErfinderDesRades schrieb:

    Drag & Drop ist in Wpf very advanced
    Advanced im Sinne von
    "von der Programmierumgebung sehr gut unterstützt - mit wenig Code umsetzbar"
    oder
    "nur von erfahrenen Programmierern machbar"
    ?

    Sobald ich mal ein Projekt ohne Zeitdruck bekomme, muss ich dringend die WPF-Anfänge wagen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    ErfinderDesRades schrieb:

    welche viele Events

    Aaalso: ich hab bei meinem VocTrainor bis jetzt von KeyDown, KeyPress, die ganzen MouseEvents, Form Load, FormClosing, ja Drag Drop und noch so viele weitere gebraucht. Oder zum Beispiel Backgroundworker, Timer und so, lässt sich sowas in der Art in WPF auch realisieren?

    Edit:
    Ich schreibe wohl viel zu langsam :/ Danke, dass ihr euch alle so bemüht und mir hier helft!

    @ArtentusDein gezeigtes Beispiel sieht wirklich toll designed aus, jedoch nein, ich würds nicht so schnell mit WPF hinbekommen^^
    Aber wie gesagt, mein Projekt ist nichts, was grafisch ziemlich gefordert wird. Gutes Design ist wichtig, hab ich mir schon sagen lassen^^ Hab bei meinem VocTrainor mal probiert, fast alle Controls selbst zu zeichnen, kam aber leider nicht ganz so gut an, wie ich erwartet habe... Aber es ist doch nicht unmöglich, in Win-Forms ein gutes Design zusammenzubekommen, oder?

    Alleine das Erlernen von WPF ist sicher viel Arbeit, ich müsste auf alte gewöhnte Methoden verzichten, auch auf die Events. den ganzen XMAL-Code, da kenn ich mich kein Stück weit aus...
    Ich zweifle, ob WPF überhaupt das richtige ist.Hab mir wohl, als ich das Thema eröffnet hab, etwas anderes von WPF erwartet. Ich glaub ich muss nochmal ein- oder zwei Mal darüber schlafen, welchen Weg ich gehe.

    MFG

    PS: Ihr seid alle eine gute Hilfe!
    Auf der Suche nach Coding-Kursen auf Lence.at

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KingTimon“ ()

    [D & D]
    Advanced im Sinne von
    "nur von erfahrenen Programmierern machbar"

    Insgesamt ists ein ziemliches Geschiss mitte Events in Wpf. Man macht da ziemliche Verrenkungen, attacht ein Behavior, damit das Event blos nicht im Codebehind verarbeitet wird - aber verarbeitet wirds doch.
    Und D&D ist ja auch in WinForms advanced - jedenfalls wenn du beim Draggen auf eine Listbox das Ziel-Item highlighten willst, oder gar den Zwischenraum, wo ein Droppen einfügen würde.

    In Wpf wird D&D dann nochmal erheblich anspruchsvoller.

    Frage ist halt, ob du Key-Events wirklich brauchst, oder ob nicht auch das Ändern einer (bindebaren) Text-Property die entsprechende Logik auslösen könnte.
    einfache Mouse-Klicks kriegt man meist per Button (du musst dir Button ganz anders vorstellen als in WinForm)-Command ins Viewmodel
    Ja, Timer kann Wpf ebenso gut, Threading kanns eiglich besser, Load/Closing - kann auch son Heckmeck sein, kann aber auch nicht.

    gugge halt das CodeBehind-Tut.

    Allerdings hab ich grad kein Plan, was ein Vokabeltrainer mit Timer und Threading zu tun haben sollte.

    KingTimon schrieb:

    Aber es ist doch nicht unmöglich, in Win-Forms ein gutes Design zusammenzubekommen, oder?
    Nein, nicht unmöglich, aber eine Menge Arbeit.
    Ich nehme an der Grund, warum deine Versuche in WinForms gescheitert sind, ist, dass du Probleme hattest, im Codebehind mit GDI das zu erreichen, was du eigentlich haben wolltest, weil du a) keine Referenz dessen hattes, was du gerade überhaupt gemacht hast, und b) weil GDI nicht gerade wenig Erfahrung und Wissen erfordert.
    In WPF ist das anders, dort ist Design wirklich nur Design und nicht Programmieren. Theoretisch könnte ein Designer, der keine Ahnung vom Programmieren hat, eine komplette Benutzeroberfläche über eine vorhandene Logik legen, und genau so ist es auch gedacht. In XAMl deklarierst du nur das, was du sehen willst, das Framework übernimmt für dich dann die tatsächliche Arbeit mit allen Berechnungen und dem Rendern.
    Wo hier gerade über die Umsetzung eines Oberflächendesigns gesprochen wird, möchte ich kurz etwas einwerfen.

    Design ist vorranging nicht Ausdruck von Ästhetik, sondern von Funktionalität. Eine gute Oberfläche zu erstellen, erfordert einigen Aufwand und man wird nicht umhin kommen sich mit der Theorie zu beschäftigen. Design reicht von Fragen der Kognition (also der Art wie Menschen Information aufnehmen und verarbeiten) über Ergonomie und einer zielgruppengerechten Nomenklatur bis hin zu Details die arbeitsmedizinisch relevant sind. Das Erstellungen von Nutzeroberflächen wird spätestens seit den 80ziger Jahren auch wissenschaftlich analysiert und niemand kann das einfach so aus dem Ärmel schütteln. Also bitte das Thema nicht unterschätzen und darauf beschränken Schlagworte wie WPF in den Raum zu werfen.

    Ein paar interessante Gedanken zu diesem Thema finden sich unter:
    • DIN EN ISO 9241 „Ergonomie der Mensch-System-Interaktion“, Teil 210 „Prozess zur Gestaltung gebrauchstauglicher interaktiver Systeme“
    • Designing for Usability: Key Principles and What Designers Think (Gould & Lewis) (Die Bibel...)
    • Designing with the Mind in Mind: Simple Guide to understanding User Interface Design Rules (Jeff Johnson)
    • Mastering Visible Wisdom: Graphic Design for Usable GUIs of Productivity Tools, Multimedia, and the Web (Aaron Marcus)

    Eine gut designte Oberfläche konnte man also auch bereits mit WinForms umsetzen. Trotzdem ist WPF natürlich der zeitgemäßere Ansatz. Es lohnt sich mMn wenigstens mal ein wenig in die Materie einzutauchen um sich der wesentlichen Grundprinzipien bewusst zu werden und den Nutzern u.U. mit ein paar wenigen Handgriffen eine bessere User Experience bieten zu können :)

    lg Christian
    @ErfinderDesRades
    Mein Vokabeltrainer war halt ziemlich funktionsreich. Den Backgroundworker habe ich dazu verwendet, dass das Programm schneller startet und alle nötigen Daten erst dann gesammelt werden. So sparte ich einiges an Zeit, das mein Programm zu laden braucht.
    Timer habe ich unter anderem für mein misslungenes Design und für die regelmäßige Message gebraucht.

    @Artentus
    Mit GDI kenn ich mich inzwischen eigentlich super aus. Mein Problem war nur, dass ich kein Plan gehabt hab, wie ich das einheitlich gestalte und dann ist eben dieser Misch Masch rausgekommen^^
    Vom Designing her scheint WPF wohl wirklich besser zu sein. Wie gesagt, ich werds nochmal überdenken. Mich schreckt einfach ab, dass ich mich so umgewöhnen müsste...

    @cl10k
    Danke auch für deinen Beitrag, ist auch interessant, was du da zusammengeschrieben hast
    MFG
    Auf der Suche nach Coding-Kursen auf Lence.at
    Ja, wie gesagt, ich schlaf noch mal drüber, vielleicht ein zweites Mal, ich bin mir in der Sache nicht ganz sicher :) aber das hier entwickelt sich zu einem super Thread für jeden, der mit WPF anfangen will. Ihr habt mir hier schon so viele Tipps gegeben, Beispiele und mir überhaupt erklärt, was WPF überhaupt ist und kann.

    Ist wirklich toll! Ich danke euch allen, die sich hier beteiligt haben. Ihr habt mir seeeeeeeeeeeehr geholfen!
    Auf der Suche nach Coding-Kursen auf Lence.at