Support, Anregungen, Wünsche zur Tutorialreihe <WPF lernen/>

  • WPF

Es gibt 114 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Neu

    Hallo Leute

    Die beiden neuen Beiträge wurden nun Freigeschaltet.
    Hier der Permalink: Tutorialreihe <WPF lernen/>

    Viel spass damit, ich hoffe man kann was dabei lernen!!

    PS: Freue mich wie immer über Kommentare und/oder Likes und Kritik!!

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    So Leute,

    es geht direkt weiter mit dem nächsten Kapitel. Im letzten Video hatte ich es ja bereits angeschnitten wobei ich es im aktuellsten Beitrag genau erkläre und auch in einem Video anhand von Beispielen erklähre.
    Designtime-Support

    Für mich nicht mehr weg zu denken. Ich erstelle keinen View mehr ohne das ich DesignTime-Support habe, meiner meinung nach ist das Fehlen des Designtime Datenkontexts der Grund warum sehr viele nicht in WPF Designen wollen und sofort wieder zu WinForms zurück gehen. Denn ohne machts keinen Spaß!!

    Hier gehts zum Beitrag

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Hallo

    Ansich habe ich es wie man im Inhaltsverzeichnis sehen kann eigendlich nicht vor.
    Das hat den einfachen Grund das Datasets meiner Meinung nach heute nicht mehr benötigt werden, zumindest nicht in der WPF. Datasets und alles was damit einhergeht wird in der WPF nur kompliziert. Man kann auch dieses ganze Zeugs wie Tableadapter und co nicht einfach mit dem Designer auf ein Form ziehen. In der WPF bindet man fast immer eine CollectionviewSource auf Controls wie z.b. DataGrids.

    Ich hatte in der WPF noch nie den drang ein DataSet zu verwenden und habe es auch noch nie gemacht, kann aber gerne in einem Video darauf eingehen wie man es machen würde wenn man es denn will.
    Wie man dem Inhaltsverzeichnis entnehmen kann wollen wir ja zu MVVM und Testbaren ViewModels, das ist das Ziel auf das man hinarbeitet in der Welt der WPF und dies ist mit Datasets einfach nicht möglich wodurch man früher oder später dann gezwungen wir erst wieder umzulernen, warum also nicht gleich anders lernen.

    Aber wie gesagt, gerne mach ich ein Video über füge ein Kapitel hinzu, bitte bescheid geben.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Ja das ist ein verständliches Argument, nur wüsste ich nicht wie ich dann mit WPF:

    Eine Art Notizbuch erstellen kann, auf welches auch andere zugreifen können, ohne eine Richtige Datenbank im Hintergrund laufen zu lassen,
    wie ich dies mit Winforms realisieren kann weiß ich, nur ist das halt designtechnisch einfach grüze, wenn das so aber mit WPF nicht wirklich realisierbar ist, muss ich halt mit schlechtem Design leben und bei Winforms bleiben
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Neu

    Es ändert sich nichts daran wo die Daten liegen ob es ein WinForms Projekt oder ein WPF Projekt ist.
    Wie gesagt, es ist möglich, siehe hier z.b.
    msdn.microsoft.com/en-us/library/dd547149.aspx

    Aber ich möchte in meinem Tutorial gerne auf neue, performante, flexible und vorallem skalierbare Technologien und Frameworks zurückgreifen.

    Aber ich habe einen Vorschlag: solltest du Interesse haben alternative Ansätze zu sehen wie man es in der WPF macht oder besser gesagt wie ich es machen würde kannst du gerne einen Thread hierfür im WPF Bereich erstellen und wir gehen das vorab schon mal durch.

    Schreib einfach dazu WIE du die Daten gerne Abrufen möchtest und welche. Vieleicht ein Codeschnipsel wie du es bisher unter WinForms gemacht hast und ich mache das WPF equivalent dazu.

    Vieleicht änderst du dann sogar deine Meinung, wer weis.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Jo, ich täte auch davon abraten, Datasets in Wpf zu benutzen.
    Nicht weil sie veraltet wären oder schlecht skalierbar, sondern weil sie einfach vom Wpf-BindungsSystem ungenügend unterstützt werden.
    Ich persönlich finde das überaus schade, dass Microsoft hier die einzige Möglichkeit, ein relationales Datenmodell auch ohne Datenbank zu persistieren, quasi abschafft.
    Tatsächlich gäbe es eine ziemliche Bandbreite an Problemstellungen, die mit typDataset + ohne Datenbank lösbar wären:
    Notizbuch, Addressbuch, Passwort-DB, Tätigkeiten-Logger, Sql-Übersetzer, Regextester, Vokabel-Trainer, etc..
    Halt kleine Datenverarbeitungen, die einerseits ein relationales Datenmodell erfordern, bei denen andererseits aber jede Datenbank ein grotesker Overhead ist, sowohl was Umständlichkeit als auch Resourcen-Frass angeht.
    Und der ausserdem die Portabilität extrem beeinträchtigt.

    Wie dem auch sei: Wpf spielt da nicht mit - der Binding-Designer zeigt zB die SpaltenNamen nicht an.
    Kann man natürlich trotzdem gegen an-programmieren, täte ich aber nicht empfehlen: das wird höchst mühsam und fehleranfällig.

    Neu

    Auch wenn's offtopic ist, aber damit ich es auch verstehe, da ich ganz am Anfang meiner WPF-Entwicklung stehe: Was meinst Du mit

    ErfinderDesRades schrieb:

    der Binding-Designer zeigt zB die SpaltenNamen nicht an
    Wenn ich einem leeren WPF-Projekt ein tDS hinzufüge, da meine DataTables reinhaue, das Projekt kompiliere und dann aus den Datenquellen ein DataGrid auf's ... öhm ... Formular kann man da wohl nicht mehr sagen ... auf's MainWindow ziehe (nicht hauen, ich weiß, dass man das besser in XAML selber schreiben sollte), erhalte ich ja ein quasi DGV-look-a-like DataGrid mit den Tabellenspaltennamen und dem korrekten Binding.

    Der tDS-Designer verhält sich so wie in WinForms-Projekten. Also wirst Du das beides nicht meinen. Aber was dann?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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

    Neu

    Hey - den kannte ich noch garnet! :thumbsup:

    Nein, allerdings meinte ich andere Arten zu binden, nämlich dass das tDs iwo im Viewmodel angesiedelt ist.

    Aber nu hab ich einen neuen Ansatz - vlt. kann man damit doch noch was reissen.
    Ich stehe aber gleich vorm nächsten Problem: Ich kann im Xaml den typisierten DataRow-Typen nicht angeben, weil das eingeschachtelte Klassen sind. Hab zwar im INet gelegentlich gelesen, dasses inzwischen formulierbar ist, nur die Beispiele haben bei mir nicht kompiliert.

    Neu

    Hallo Leute

    Ja, wie @VaporiZed schon schrieb kann auch der Designer unter WPF das meiste.
    Und... macht nix wenn du Form sagst. In WPF sind es hald Window aber jeder weis ja was du meinst.

    Es gibt zwei Gründe warum ich es nicht in meiner Reihe durchnehme:
    • Wir wollen ja im Endeffekt später zu MVVM und da machen wir dann nicht mehr viel mit dem Designer
    • Ich fand und finde auch heute noch diese Klicki-Bunti Geschichten überaus nervig. Ich bin da vieleicht eigen, aber wenn ich programmieren dann will ich mit meinem Code bestimmen was wie wo und wann passiert und bin kein Freund davon dies aus der Hand zu geben. Ich weis, da bin ich eigen, ich konnte mich aber noch nie mit diesen tDs und allem was dran hängt anfreunden. Verzeiht mir das bitte.
    Da wir in der WPf ja das Ziel haben früher oder später von den Vorteilen der Trennung zwischen View und Code zu profitieren (und das tut man in der Tat) möchten wir solche Unternehmungen eigentlich vermeiden.
    Vorallem wenn es auch anders geht.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Hallo nochmal

    Ich habe gerade ein Beispiel gemacht wie einfach es sein kann ein Notizbuch (sind jetzt nicht alle Funktionen enthalten wie z.b. neuanlage) zu erstellen.
    Unter zuhilfenahme des xmlDataProvider ist das eine einfache Sache.

    Ohne viel Code, mit Binding und Designtimesupport inkl. Intellisense. Was will man mehr.

    Grüße
    Sascha
    Dateien
    • WpfNotizbuch.zip

      (52,01 kB, 6 mal heruntergeladen, zuletzt: )
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Nofear23m schrieb:

    Ja, wie @VaporiZed schon schrieb kann auch der Designer unter WPF das meiste.
    Hmm - also ich komme mit der aufs Window gezogenen DataTable nicht recht weiter.
    Der generierte Code ist stark Anti-MVVM, und beim Umstricken habich wieder meine alten Problem, dass Binding-Picking nicht möglich ist, und das Datentypen garnet formulierbar sind.
    Letzteres bewirkt, dass man auch beim Entwerfen von DataTemplates keine Intellisense oder sonstige Unterstützung hat.
    Und ohne derlei Unterstützung ist Wpf einfach jämmerlich - da kann man denn auch im NotePad-Editor programmieren - also da hat man ja unter vb6 schon sicherer gecodet.

    Ich guck mir mal das mittm XmlDataProvider an, aber ich glaub, auch der bietet keine DesignTime-Info über die Daten, die da bereitgestellt werden.

    Oh - cool - der XmlProvider scheint Daten-Informationen bereitstellen zu können.
    Zwar bei weitem nicht in dem Umfang, wie ein relationales typisiertes Datenmodell es könnte (Xml kann ja nur String), und eben nur hierarchisch-nicht-relational - aber sicherlich kann man damit schoma eine Menge anfangen.

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

    Neu

    ErfinderDesRades schrieb:

    Der generierte Code ist stark Anti-MVVM

    Wie jetzt? Logisch.
    Alles was ich im Designer mache kann gar nicht MVVM tauglisch sein. Wie soll das funktionieren wenn ein View von einer Logik getrennt ist.

    ErfinderDesRades schrieb:

    Oh - cool - der XmlProvider scheint Daten-Informationen bereitstellen zu können.

    Naja, auch nicht so meines, aber wenns mal schnell gehen muss kann man den sicher hier und da mal verwenden.

    Wie gesagt, das Ziel ist ein anderes =O

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    Neu

    Hi @Nofear23m
    Dein Tut über Binding hat mich beindruckt.
    Ich weis - dieses Kapitel ist sehr umfangreich und hat das Video in die Länge gezogen...
    Mir ist aber aufgefallen, das zwei Arten von Binding nicht behandelt wurden:
    Multi- und Prioritybinding
    Wären m.M. vlt. noch einen Nachtrag wert :)

    Neu

    Hallo @VB1963

    Das hast du richtig beobachtet. Ich möchte mit Binding nicht ZU schnell voranschreiten. Ich denke das Binding ansich sollte man etwas "sickern".
    Jeder soll das mal probieren und versuchen etwas zu verstehen.
    In der Tat werde ich am Ende des Binding-Kapitels ein Bonusvideo 8o über MultiBinding machen. (Ups, jetzt hab ichs verraten)

    PriorityBinding lasse ich allerdings völlig weg. Zum ersten deshalb weil man es wirkich sehr selten benötigt zum anderen weil es jeder der Binding versteht auch in Minuten im Netz nachschlagen kann und dann auch versteht.
    Bonus deshalb weil ich der Meinung bis dan man auch Multibinding eher selten benötigt. Aber hier und da dennoch nicht schlecht ist.

    Aber echt super mitarbeit. Top!!

    Schöne Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.