Frage

Dies wird wahrscheinlich offensichtlich sein, aber ich kann den besten Weg nicht finden.

Ich möchte die Todo des Benutzers in einer Listbox anzeigen. Diese Todo befinden sich in der Datenbank und bestehen aus einer ID, einer BenutzerID und einer Beschreibung.

Der Benutzer hat sich bei der App angemeldet.

Wie kann ich die Todo für diese bestimmte BenutzerID abrufen und für die Bindung an die Listbox einrichten?

Ich habe es mit einem ObjectDataprovider versucht, aber ich kann nicht herausfinden, wie man das in Kombination mit nichtstatischen Dingen verwendet (wie mein _dbservice, userId, Sprache, ...).

Sind die einzigen Optionen, um all diese Dinge statisch zu machen, und wenn der Code dahinter verbindet?

Wenn ja, bedeutet dies, dass ObjectDataprovider nicht sehr nützlich ist, nein? Ich finde viele Beispiele dafür, dass es mit einem hartcodierten Parameter verwendet wird, aber ich sehe kaum eine Situation, in der ich eine solche Funktionalität brauche.

War es hilfreich?

Lösung

Ich mache alle meine WPF mit dem Modell-View-ViewModel Muster. Ich habe Ihnen dort einen Link gegeben, aber Google gibt Ihnen Ladungen. MVVM scheint das Standardmuster für WPF zu sein. Dieses Projekt ist wahrscheinlich komplizierter als Sie brauchen, aber es ist gut geschrieben und bringt die Verwendung von MVVM nach Hause.

Grundsätzlich erstellen Sie ein Modell Ihrer Daten. In diesem Fall würden Sie wahrscheinlich eine einfache Klasse (ich nennen sie todoItem) mit Eigenschaften -ID, BenutzerID und Beschreibung an. Verwenden Sie Ihren bevorzugten Mechanismus, um eine Sammlung davon aus der Datenbank zu erhalten. Link zu SQL, Entity Framework, eine Standardabfrage, was auch immer.

Dann haben Sie Ihr ViewModel - Sie haben eine Instanz des ViewModel für jede Instanz des Modells: Die VM hat einen Verweis auf die Eigenschaften von M und 'Forwards'. Das ViewModel manipuliert das Modell.

Dann haben Sie Ihre Ansicht - dies ist die Benutzeroberfläche. Sie setzen den DataContext der Ansicht auf das ViewModel und Ihre Bindungen binden automatisch an das ViewModel. Ihre Ansicht ist nur die Dinge, die Sie sehen können. Die gesamte Arbeit wird im ViewModel erledigt. Dies bedeutet, dass es sehr einfach zu testen ist.

Wenn Sie also auf eine Schaltfläche in Ihrer Ansicht klicken, übergeben die Bindungen diese an einen Befehl in Ihrem ViewModel, der das Modell manipuliert.

Die Benutzeroberfläche ist auch eine Ansicht mit einem ViewModel. Daher kann Ihre UI -VM eine Sammlung von Modellen aus der Datenbank laden und sie in eine Beobachtungspunkte stecken. Die Sammlung von Listbox -Elementen wäre an diese Beobachtung gebunden.

Es ist schwer, all dies in einem solchen Beitrag zu erklären. Lesen Sie ein paar Artikel und sehen Sie, was Sie denken. Ich bin auch immer noch ziemlich neu, aber ich glaube, meine Lektüre über MVVM hat sich ausgezahlt.

Andere Tipps

Hela Thomas, Tom hier aus der Umlaufbahn eines :)

MVVM ist der richtige Weg. Ich bin in meinem 4. Projekt und WPF leuchtet wirklich, wenn Sie MVVM verwenden. Sie haben bereits MVC (oder MVP wie auf Recy*Tire) ausprobiert, und das ist eine schöne Trennung von Sorge. MVVM geht noch einen Schritt weiter, da das ViewModel absolut nichts über die Ansicht weiß.

Die Ansicht bindet an das ViewModel, so dass sie einen Hinweis darauf hat (2 Wege, super kraftvoll und funktioniert über die typische MS -Demo hinaus). Das ViewModel ist nur ein POCO und eine Darstellung Ihrer Ansicht, Daten + Verhalten. Sobald Sie diesen Absatz graben, hat der coole Begriff MVVM keine Geheimnisse.

Ich sehe, ob ich mir eine kleine Demo einfallen lassen kann. Vielleicht habe ich später Zeit. Ich werde eine Ansicht (xaml, Datei 1) finden, die an ein ViewModel (Datei 2, eine Poco -Klasse, nicht mit Code dahinter verwechselt werden kann). Das Modell kann alles sein, was Sie möchten (Serviceschicht oder direkt zu den Repositorys). Mit der Leistung der 2 -Wege -Bindung werden wir an eine beobachtbare Sammlung binden, was bedeutet, dass die Ansicht, wenn wir addieren/löschen/... etwas zur Sammlung aufnimmt, ohne dass wir Energie hineingeben.

Meine ersten 2 WPF -Projekte wurden mit Caliburn Micro (siehe Codeplex) durchgeführt, ein leistungsstarkes Rahmen, das auf Konventionen basiert. Es schützt Sie vor Hardcore -WPF (erstellen Sie hauptsächlich die Eigenschaften von Tourabhängigkeit) und Sie können etwas relativ schnell erstellen, ohne WPF vollständig zu verstehen. Das ist ein Nachteil von sich selbst, aber es hat für mich funktioniert. Zum Zeitpunkt von Projekt 3 habe ich selbst angefangen, diese Abhängigkeitseigenschaften selbst zu zähmen, und es wird Sie zu einem besseren WPF -Entwickler machen.

Ich sehe, die Frage ist ab Oktober. Haben Sie eine gute Lösung gefunden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top