2010-02-11 12 views
6

Ich bin neu in WPF für Windows-Anwendungsentwicklung, wollte nur das da draußen zuerst. Ich verwende Visual Studio 2010 und .NET Framework 4.0.Einfache CRUD Arbeit mit WPF und Datenbindung

Ich arbeite an einem ziemlich einfachen Verwaltungswerkzeug. Der Einfachheit halber möchte ich sagen, dass ich mit Mitarbeiterdaten arbeite. Ich habe ein kleines UserControl namens UserDetail erstellt, das alle Felder enthält, die sich auf die Employee-Klasse beziehen.

Was ist der einfachste Weg, um die Eingabesteuerelemente auf meinem UserDetail zu binden? Dies könnte ein leerer Bildschirm beim Erstellen einer neuen Instanz sein oder vorhandene Werte beim Bearbeiten einer vorhandenen Instanz.

versuchte ich folgend im Konstruktor:

DataContext = _employee; 

Und ich eine Kontrolle wie dies in der XAML gebunden:

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/> 

Dies funktioniert, aber es scheint nicht, wie der richtige Weg es zu tun. Dies scheint ein einfaches Beispiel zu sein, aber ich habe noch nichts hilfreiches gefunden.

Haben Sie Vorschläge oder Links zu einem Tutorial für diese einfache Bindung?

+0

Sie werden wahrscheinlich feststellen, dass Sie, sobald Sie die Magie von MVVM verstanden haben, kein UserControl für Ihre Mitarbeiterdaten benötigen, nur eine Vorlage. –

Antwort

4

Wie Joel sagt, Sie sind auf dem richtigen Weg. An einem bestimmten Punkt müssen Sie den DataContext im Code dahinter explizit festlegen. Dies wird normalerweise auf einer obersten Ebene geschehen - wie in Ihrer Window-Klasse - und alle weiteren DataContexts sollten über DataBindings gesetzt werden.

Für Ihr spezifisches Beispiel sagen Sie, dass Sie an einem UserControl arbeiten. Sie sollten in der Lage sein, den DataContext des UserDetails-Steuerelements direkt dort zu binden, wo das Steuerelement verwendet wird, und daher sollten Sie den DataContext nicht im Code hinter dem UserControl festlegen müssen. Zumindest normalerweise ist der Benutzer Ihres Benutzersteuerelements derjenige, der dem Benutzersteuerelement mitteilen würde, welche Daten zu verwenden sind.

Nehmen wir an, Sie haben eine Klasse AllEmployees mit einer Eigenschaft SelectedEmployee. Sie legen eine Instanz dieses Objekts als DataContext in Ihrem Fenster fest - im Code dahinter. Jetzt möchten Sie, dass in Ihrem Fenster Benutzerdetails für den SelectedEmployee angezeigt werden. Die Userdetails Steuerung gebaut vorausgesetzt, es ist ein Objekt Employee hat seine Datacontext gebunden, und Sie nun sicherstellen, dass es eine durch diese in einem Databinding-Einstellung:

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl> 
    .. 
    <local:UserDetails DataContext={Binding SelectedEmployee} /> 
    .. 
</Window> 

Sie können auch ein Employee-Eigenschaft auf Ihre Userdetails Klasse hinzuzufügen, die wird den DataContext setzen - wenn Sie denken, dass dies in der Bindung besser aussieht.

Um die Trennung zwischen der GUI und Ihrem Domänenmodell zu verbessern, sollten Sie unbedingt über the MVVM pattern erfahren. Ich lernte zunächst von this video von Jason Dollinger ein paar Mal. Das Video wird Ihnen eine Menge nützlicher Dinge über WPF beibringen. This question scheint auch einige wertvolle Links zu diesem Thema zu haben.

Viel Glück beim Lernen von WPF! Es unterscheidet sich ein wenig von anderen GUI-Frameworks, so dass die Lernkurve ein wenig steil sein könnte. Aber wenn du erst einmal hineingekommen bist, ist es ein wunderbarer Ort!