WPF-Projekt [LRPC]

  • WPF

Es gibt 111 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaHo.

    In wieviele Teile würdest du deinen Hauptview anhand der Skizze unterteilen?

    Da ich bisher dachte 1, und du das als falsch einstufst, weis ich aktuell nur das mehr als 1, nach welchen kriterien entscheidet man das ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    asusdk schrieb:

    hatte ich in der Skizze vergessen, dafür dachte ich einfach an einen Plus-Button zum hinzufügen, einen Minus-Button um das selektierte zu löschen, und einen Edit-Button zum Editieren, meintest du das ?

    Mit Menüband meine ich die Leiste ganz oben in deinem Programm, wo man zwischen verschiedenen Arbeitsbereichen hin und her schalten kann (Beispiel: Der Produktmanager, wo man die Produkte anlegen kann, oder, die Einstellungen)

    asusdk schrieb:

    habe mir den Thread auf GitHub ncohmal durchgelesen, finde keine Stelle wo eine Produktverwaltung erwähnt wird ?

    Mit Produktverwaltung meine ich die Art, wie man Produkte zu der Berechnung hinzufügt. Lassen wir jetzt ja aber auf deiner Art mit den 2 Listboxen.


    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Mit Menüband meine ich die Leiste ganz oben in deinem Programm, wo man zwischen verschiedenen Arbeitsbereichen hin und her schalten kann (Beispiel: Der Produktmanager, wo man die Produkte anlegen kann, oder, die Einstellungen)

    Wiese benötige ich hierfür ein menü ? Button"Create Product"-> Fenster"Add Product" ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Da hatte ich auf der 2ten-Tab-Seite nochmal die selbe liste wie auf der ersten Seite mit den 3 erwähnten Buttons, und das mehr oder weniger auch nur weil ich die nicht Optisch "schön" auf der ersten seite untergebracht habe, denn hätte ich das Fenster größer gemacht, wären ja auch die beiden anderen Tabseiten größer geworden, und es ist jetzt schon grenzwertig auf dem Settings-Tab

    Aber jetzt versteh ich zumindest schon einmal was du meinst ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Nimm es jetzt einfach mal so hin Asus das artet sonst aus. Falls du das Projekt verstehst kannst du es jederzeit abändern.

    Also klar, es gibt 1 Haupt-ViewModel.
    In diesem sind dann eines für die Schnellnavigation, eines für das Menüband, eines für den Hauptteil wo sich das meiste abspielt. In diesem gibt es dann vieleicht auch noch aufteilungen in mehrere, aber dazu kommen wir dann wenn es soweit ist.

    Verstehst du das in etwa??
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    asusdk schrieb:

    zugegebener maßen nicht ganz, aber es klingt nach ein Viewmodel pro Control auf dem View ?

    Da würdest du ja nie fertig werden :D
    Und überhaupt, was würde das den für einen Sinn ergeben?

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Asus. Bitte lass jetzt mal das sofortige Antworten und schlaf darüber. Lass dir das durch den Kopf gehe und überlege mal wie das gemeint ist und wie das ganze in ein ViewModel übertragen werden kann.

    Denk mal ein wenig nach und Teile uns morgen dein Ergebnis mit. Dann sehen wir weiter. Streng dich an, ich weis du kannst das.

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

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ok, da mir bislang jedweder Ansatz für ein ViewModel fehlt, habe Ich mir mal dein WPF-Notes Projekt noch einmal angesehen, davon ausgehend, das ich es richtig verstanden habe, hast du zusammengehörende Controls wie z.B. Menü-Buttons, oder die Eigentlichen Listen in jeweils eigenen UserControls getrennt.

    Davon ausgehend das mir sicher noch Infos/Kriterien fehlen, würde ich es aktuell wohl folgendermaßen aufteilen:

    1 Viewmodel, für die Berechnungs-History, also die zuletzt angestellten Berechnungen, vermutlich als liste
    1 Viewmodel, für die Liste an verfügbaren Produkten und die Darstellung der Werte, der einzelnen Produkte
    1 Viewmodel, für die Controls zum hinzufügen, editieren oder löschen der Produkte
    1 Viewmodel, für die Controls zum hinzufügen, editieren oder löschen der Produkte in/zur Berechnungsliste
    1 Viewmodel, für die Liste in welcher die für die Berechnung gewünschten Produkte sind und direkt die Werte der Berechnungen anzeigt.

    Bin ich dahingehend auf der richtigen Spur ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Hallo

    Na schau, so weit weg biste ja gar nicht. Hat es geholfen mal ein wenig abstand zu nehmen. Das ist gut.

    Gehen wir mal das wichtigste an.

    Als erstes unterteilen wir deine Skizze mal in deri Teile. Die Schnellnavigation, den Hauptteil und das Menuband oben.

    Gut, außer dem Hauptteil interessiert uns Anfangs jetzt mal nix. Also schaun wir, was wir beim Hauptteil benötigen. Die verfügbaren Produkte, die Produkte welche bereits dem Mietvertrag hinzugefügt wurden und die Berechnung.
    Da du weder die Stückzahl oder ähnliches haben willst (warum auch immer) kann VerfügbarePRodukte und Produkte welche hinzugefügt sind das selbe ViewModel sein.

    Hier ein Bild, da erkennt man es vieleicht besser. Leuchtet das ein? Ist das logisch?



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

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Da du weder die Stückzahl oder ähnliches haben willst (warum auch immer)

    Naja, was heist nicht wollen, sagen wir mal das es zu 99,9999 % unwahrscheinlich ist das es mal vorkommen wird das 2x das selbe Model ausgeliehen wird. Und rein theoretisch reicht es dann ja aus das gleiche Model einfach erneut hinzuzufügen.

    Wenn du jetzt aber sagst, das es besser wäre, dennoch eine "Anzahl" mit hineinzunehmen, dann können wir dies gerne tun.

    Hier ein Bild, da erkennt man es vieleicht besser. Leuchtet das ein? Ist das logisch?

    Naja, sagen wir mal so, du sagst es gehört so, also denk ich es gehört so, aber wirklich nachvollziehen kann ich das nicht wirklich, da ich bisher daran scheitere eine zugrunde liegende Logik zu erkennen.
    Ich habe ja bislang noch keine wirkliche Vorstellung vom ViewModel-OOP-WPF daher machen wir das ganze hier ja ^^

    Bislang hab ich im Kopf es gibt etwas das nennt sich "ViewModel", es hat mit der UI zu tun, und wird zwischen ein DataModel und das UI geklemmt. Es stellt Quasi eine zusätzliche UI-Schicht dar. Aber das ist bislang leider wahrlich alles was ich am Prinzip verstanden habe.
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Hallo,

    asusdk schrieb:

    Es stellt Quasi eine zusätzliche UI-Schicht dar.

    Nicht direkt UI.
    UI ist ja UserInterface ==> View.
    Im Model sind die Eigenschaften von deinen Objeten gespeichert.
    Die Logik des Programms steht im ViewModel, was im Grunde diese beiden Schichten verknüpft.

    Siehe dazu auch dieses Bild:

    Die View ist per Binding (Sowohl von z.B. Textboxen als auch z.B. Buttons mit Commands) an das ViewModel gebunden.
    Das ViewModel wiederum sendet Benachrichtigungen an das View, wenn sich zum Beispiel das Property Price bei einem Produkt ändert, sodass sich die Anzeige automatisch aktuallisiert (dafür implementierst du INotifyPropertyChanged)
    Außerdem gibt das ViewModel die bearbeiteten Daten wiederum zurück an das Model (Bsp.: Du änderst den Preis eines Produkts in der View: Die Eigenschaft Price im VM (an die die View ja gebunden ist) "schreibt" im Grunde in das Model Obejkt "Product" den aktuellen Preis hinein (musst du natürlich implementieren).
    Auch das Model sendet Benachrichtigungen an das ViewModel, z.B. ob die Eigenschaften Valid sind (was wir ja auch haben)

    Ich hoffe das hat zum Verständnis beigetragen und dich nicht noch mehr verwirrt. :)

    @Nofear23m und hoffentlich stimmt alles auch so habwegs :D

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    @flori2212
    Ja, das stimmt soweit. Korrekt

    @asusdk
    Ein ViewModel ist als erstes mla eine Klasse. OK. Eine Klasse hat Eigenschaften (Properties) und vieleicht Commands (Kommandos).

    Wie du an dem Bild sehen kannst ist das indirekt Verbunden (über Binding). Möchtest du also den Preis eines Produkts im UI anzeigen bracht es in dem ViewModel eines Produkts die Eigenschaft (Property) Price.
    Also ...... für jedes Textfeld im UI = eine Eigenschaft im ViewModel. Für jeden Button einen Kommando. Soll ja was passieren wennste draufdrückst.

    Das man mehrere ViewModels hat ergibt sich durch das Bindingprinzip. Es soll ja miteinander verbunden werden. Natürlich unterteilt man die einzelnen Teile eines UIs in logische Teile, schon mal aus übersichtlichkeit.

    Wer will sich jetzt an den ViewModel wie in meinem Bild versuchen?

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

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    flori2212 schrieb:

    Wie darf man das verstehen?

    Na wer will versuchen es zu implementieren.

    Da AsusDk noch viel Verständnis fehlt nehme ich mal an er nicht, er sollte es aber auf jeden Fall auch versuchen.
    Es kann ja jeder einen PullRequest machen oder den Code hier Posten, dann sehen wir mal wie wir das übernehmen.

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

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nofear23m schrieb:

    Na wer will versuchen es zu implementieren.


    Klar, hab ich mal wieder nicht genau gelesen. :thumbup:

    Dann schreibe ich auch mal eine Umsetzung...

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor