WPF-Projekt [LRPC]
- WPF
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 111 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaHo.
-
-
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
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üßeIf _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
SaschaIf _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
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. ##
-
Nofear23m schrieb:
Wer will sich jetzt an den ViewModel wie in meinem Bild versuchen?
Wie darf man das verstehen?
Viele Grüße
Florian----
WebApps mit C#: Blazor -
-
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
SaschaIf _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.
Dann schreibe ich auch mal eine Umsetzung...
Viele Grüße
Florian----
WebApps mit C#: Blazor
-
Ähnliche Themen