WPF erlernen aber wie?

2 Antworten

Also ich habe mir noch nicht Windows Forms angesehen weil ich es für schlauer hielt direkt zum aktuellen zu springen.

WPF ist auch nicht mehr aktuell, allerdings gibt es derzeit keine aktuelle Alternative von Microsoft. MAUI kommt, aber das ist noch nicht released, außerdem baut es auf einige Konzepte auf, die schwer zu erlernen sind.

WPF ist dennoch eine kluge Wahl, da es einige (nicht alle) dieser Konzepte groß gemacht hat, auf denen die Jahre danach viel aufgebaut wurde.

Und bedenke: Ohne MVVM kein WPF.
Also - geht schon, aber Du legst dir dabei nur massiv Felsen in den Weg und das wäre ja dumm ;)
MVVM mag anfangs Fragen aufwerfen, aber es wurde für WPF entworfen und WPF wurde für MVVM entworfen, beides hängt eng zusammen.
Viele arbeiten um MVVM herum, weil sie es so leichter verstehen, aber die Leute haben dann immer die gleichen Probleme, die es nicht gäbe, wenn sie sauber nach MVVM arbeiten würden.

Ach und noch drei Tipps:

Schau dir auch in der MSDN-Doku die Einführung an, die Grundlagen sind vermutlich umfangreicher, als Du denkst, Du musst nicht alles wissen, aber zumindest davon gelesen zu haben und zu wissen, wo Du es nachschlagen kannst, ist wichtig.
Außerdem solltest Du OOP verinnerlicht haben, bei WPF und insbesondere MVVM ist die OOP der zentrale Angelpunkt, um den sich alles dreht. Ohne OOP verzweifelst Du.

Wenn Du irgendwas (z.B. Tutorials) siehst, wo dir jemand erklären will, es sei einfach, eine schöne Oberfläche in WPF zu entwickeln - das taugt nichts. WPF ist nicht einfach, es ist bei kleinen Mini-Beispiel-Projekten einfach, aber so sehen ja nur die wenigsten Projekte aus.

Und wenn Du von Tasks/async/await liest: Schieb das beiseite (nach WPF), zum Lernen geht's auch ohne. Das ist ein ganz anderes Kaliber ^^ Nicht so umfangreich, aber die Zusammenhänge sind viel schwerer zu begreifen.

Für C# hatte ich ein Lehrbuch. Das schneidet aber Window Forms und WPF leider nur ganz grob an

Dann war es mMn. kein gutes Lehrbuch ;)
Allerdings vergleiche ich das auch mit den "Visual C# 2010/2012/2019"-Büchern, die nach den Grundlagen noch auf fortgeschrittene Grundlagen und komplexe Themen eingehen, wie z.B. WPF oder Datenbanken.
Allerdings ist auch "Visual C# 2019" nicht mehr aktuell, zumindest erklärt das meines Wissens nach noch das alte Entity Framework 6, das Neue "Core" tickt aber in einigen Punkten anders.

Für WPF gilt das aber nicht. Seit es als feature complete eingestellt wurde, hat sich (neben der Portierung auf .NET 5) kaum was getan, Du kannst also auch auf alte Quellen zurückgreifen. "Visual C# 2012" geht z.B. auch auf WPF ein und ist kostenlos. Du musst nur darauf achten, dass Du mit dem neuen .NET arbeitest und nicht das alte, da es da doch deutliche Unterschiede gibt.

Oder Du suchst im Internet.
Es würde mich wundern, wenn Microsoft kein "Get Started"-Bereich für WPF hat.

Alles wirst Du aber nicht im Internet lernen können, das ist zu viel. Das eigene Interesse, neues Unbekanntes zu erforschen, das bringt dich weiter. Ein größeres Projekt kann dabei ein entscheidend antreibender Faktor sein.

By the way:

Wenn Du HTML kannst, wirst Du einige Parallelen finden können.
WinForms-Umsteiger haben es dagegen deutlich schwerer.

Woher ich das weiß:Berufserfahrung
RicardoMango 
Fragesteller
 02.02.2022, 20:11

Vielen Dank, die Dokumentation von Microsoft habe ich in der Tat wenig benutzt. Ich finde sie gewöhnungsbedürftig und finde irgendwie nicht das was ich suche aber mit wurde schon häufiger gesagt ich solle mich mehr mit ihr auseinandersetzen. Werde den Tipp beherzigen und mich mal aktiv damit auseinandersetzen. Bislang habe ich versucht dem aus dem weg zu gehen

0
Palladin007  02.02.2022, 20:43
@RicardoMango

Die MSDN-Doku ist wirklich außergewöhnlich gut, da hast Du bei anderen Sprachen/Communities sehr viel schlechtere Karten.

Allerdings ist sie auch außergewöhnlich umfangreich, das ist dem großen Umfang von C# und den Frameworks geschuldet. C# ist ja auch deutlich umfangreicher als Java und bietet einige Funktionen, die mehr als nur ein bisschen in Richtung C++ und Low-Level-Programmierung deuten.

Das ist alles gut, denn so hat man Optimierungsmöglichkeiten, wenn man sie braucht (und hauptsächlich Microsoft nutzt sie sehr viel), allerdings geht das nicht ohne erhöhten Umfang.

Und ein paar Themen (Tasks, Structs, Span, etc.) sind weit davon entfernt, einfach zu sein, aber sie sind auch ein enormer Vorteil. Z.B. seit es die Spans gibt, liefert Microsoft mit jeder neuen Version Ver-x-fachungen der Performance in irgendwelchen Details, da klappt dir die Kinnlade runter, wenn Du nach Stunden endlich begriffen hast, warum das so funktioniert und warum es plötzlich 300% schneller ist :D

Ach ja:

Schau dir die Metadaten an und lerne mit der IntelliSense-Hilfe und dem Debugger umzugehen. Beides ist nicht sehr schwierig, kann aber ein enorm wertvolles Werkzeug bei der Arbeit sein und - darauf will ich hinaus - auch bei der Analyse, wie etwas funktioniert oder welche Möglichkeiten Du hast.
Die Frameworks stellen mit ihren Metadaten dank der guten Code-Guideline teilweise eine richtige Doku dar, man muss sie nur lesen und ein Gefühl für Zusammenhänge und Namen entwickeln.
Z.B. arbeite ich gerade mit einer recht neuen Technologie, für die gibt es einfach noch keine umfassende Doku - was ich heute dazu weiß, weiß ich, weil ich es auf diese Weise selber herausgefunden habe.

1
Palladin007  03.02.2022, 01:00
@RicardoMango

Das kann ich dir nicht sagen :D
Aber C# als Ganzes ist sehr viel umfangreicher, als man so denkt.
Aber das macht es ja auch so spannend, finde ich.

Wenn das für dich ein Problem ist (dass Du nie aufhörst zu lernen), dann ist C# vielleicht nicht die ideale Wahl, denn zusätzlich zum aktuellen Umfang treibt Microsoft die Entwicklung gerade extrem voran.
Das ist einerseits super, weil die Sprache und die Frameworks kontinuierliche weiterentwickelt werden, aber es fordert auch diejenigen, die damit arbeiten, denn die müssen da auch mithalten können.

Wenn dich einen groben Überblick interessiert:

C Sharp (programming language) - Wikipedia
Beachte die Zeiträume und dass sie immer kürzer werden.
Es wirkt, als hätten sie den Fuß von der Bremse genommen.

Und die Historie samt Feature-Übersichten:
Die Geschichte von C#: Leitfaden für C# | Microsoft Docs

Ob das alles für einen Anfänger notwendig ist - eher nicht. Gerade mit den letzten Versionen (8, 9, 10) kamen viele Features, deren Zielgruppe ganz klar Framework-Entwickler sind und keine "normalen" Entwickler - die wurden deshalb auch von vielen eher kritisch gesehen.
Aber wenn Du in dem Bereich noch mal etwas erreichen willst, wirst Du da nicht drum herum kommen und solltest zumindest grob wissen, was es ist, wie man es nutzt und vor allem, wo die Gefahren liegen.

1

Die erste Quelle, auf die ich verweisen würde, wäre die Microsoft Dokumentation.

Ansonsten gibt es einige Blogs, die sich in jeweiligen Artikeln mit den einzelnen Aspekten von WPF beschäftigen.

Generell ist CodeProject eine gute Anlaufstelle. Auf dieser Entwicklerplattform findest du zahlreiche Artikel, die sich mit WPF-Techniken oder praxisbezogenen Anwendungsbeispielen beschäftigen.

Des Weiteren beschäftigt sich das Buch zu C# vom Rheinwerk-Verlag in seinen letzten Kapiteln mit WPF. Du kannst hierfür auch auf die kostenlose OpenBook-Variante zurückgreifen, auch wenn sich diese Auflage noch mit C# 2012 befasst. Für einen Einstieg reicht das aus.

Wenn du nach Videotutorials suchst, würde ich mich wohl auf PluralSight oder Udemy umschauen, allerdings kann ich dir da keine konkreten Empfehlungen geben. Auf YouTube wäre der Kanal von IAmTimCorey hilfreich.

Da das MVVM-Pattern mit WPF stark zusammenhängt, würde ich dir empfehlen, dich auch mit diesem zu beschäftigen. Das Konzept in Kurzform ist es hierbei, die Anwendungsteile für die grafische Oberfläche von der reinen Anwendungslogik zu trennen / entkoppeln. So bleibt der Code übersichtlich strukturiert und bei Bedarf fällt es leichter, die Module (beispielsweise die grafische Oberfläche) komplett auszutauschen, ohne dafür die anderen Module anpassen zu müssen. Oberflächenelemente (Buttons, Textfelder, u.ä.) sollten daher ausschließlich im XAML-Code definiert werden. Ihre Eigenschaften im C#-Code zu manipulieren (oder grundsätzlich View-Code mit C# zu schreiben), ist meist ein Zeichen für schlechtes Design.

Einige der oben genannten Quellen beschäftigen sich bereits mit MVVM. Des Weiteren kannst du in diese schauen:

Beachte aber, dass sich das XAML in Xamarin (zweiter Link) von dem XAML im WPF an einigen Stellen etwas unterscheidet.

Es gibt des Weiteren das MVVM Toolkit, welches nochmal nützliche Klassen liefert. Schau es dir ruhig einmal an, vor allem die Implementationen für einen RelayCommand oder die Observer sind interessant. Letztere können später einmal die Implementation eines INotifyPropertyChanged-Interfaces verkürzen.

Zuletzt noch ein Hinweis, da ich nicht weiß, was du alles in die C#-Grundlagen einfasst: Neben den Konzepten der Objektorientierung solltest du mit Delegates und Events bereits vertraut sein, denn sie sind fester Bestandteil von WPF (aber auch schon Windows Forms). Im oben verlinkten OpenBook kannst du zu diesen Themen einzelne Kapitel finden, die ausreichen sollten, dich damit vertraut zu machen. In neueren C#-Versionen können Events/Delegates stellenweise noch etwas verkürzt werden, doch darauf sollte dich Visual Studio ebenso aufmerksam machen. Es ist nur syntaktischer Zucker.

RicardoMango 
Fragesteller
 02.02.2022, 19:53

Delegates und Events kenne ich und habe ich gelernt. Jedoch fällt mir irgendwie der Einstieg in die Grafik ein bisschen schwer, mich verwirrt es irgendwie. Aber danke für deine Hilfe werde ich mir aufjedenfall mal anschauen.

0
regex9  02.02.2022, 20:56
@RicardoMango

Das grundsätzliche Beschreiben von Oberflächenelementen und Positionieren im Layout ist nicht schwer, bzw. mit etwas Anlesen kommt man schnell hinein. Es wird erst komplizierter, wenn man anfängt, mit Bindings, Triggers, eigenen Konvertern u.ä. zu arbeiten.

Das Gute ist, dass Visual Studio schon ziemlich ausgereifte Tools hat, die deine Arbeit unterstützen. Nur den Drag&Drop-Designer würde ich nicht empfehlen, wenn es um die Positionierung der Elemente geht, denn der generierte Code setzt dabei Margin-Attribute, die dein Layout nicht unbedingt flexibel gestalten. Wenn du ihn also nutzt, würde ich an deiner Stelle den XAML-Code nachträglich noch einmal überarbeiten.

1