In einer WPF-Seite, die ich für meine Kirche bin der Gestaltung, habe ich zwei ListBox Kontrollen an den Ergebnissen zweier gebunden Linq-to-Entities-Abfragen: die erste Listbox/Abfrage, um die Leute alle enthält, die noch nicht für das Jahr versprochen, enthält die zweite Listbox/Abfrage alle Leute, die zugesagt haben (und die damit verbundenen Zusagen). Im Einzelnen:Referenzierung Kontrollen in einer WPF-Datatemplate
var familiesWithNoPledges = from family in entities.Family.Include("Pledge")
where !family.Pledge.Where(p => p.PledgeYearID == pledgeYear).Any()
select family;
var familiesWithPledges = from family in entities.Family
join pledge in entities.Pledge.Include("PledgeFrequency").Where(p => p.PledgeYearID == pledgeYear) on family equals pledge.Family
select new { family, pledge };
Wenn der Benutzer der Anwendung eine Familie aus der ersten List-Box wählt, dehnt ich das ListBox Element leicht die Felder für ein Pfand zu zeigen, so dass es einfach ist, die Versprechen Details zu der zweiten List-Box hinzuzufügen. Es sieht etwa so aus:
http://wouldbetheologian.com/images/PledgeManager.jpg (Offsite Image)
Die zugrunde liegende Datenbank (unter anderem) einen „Familie“ Tisch mit einer 1: Beziehung zu einer „Pledge“ Tabelle. Und wenn der Benutzer auf die Schaltfläche "Pledge hinzufügen" klickt, möchte ich die neue Pledge-Instanz erstellen, in der Datenbank speichern und dann die beiden Steuerelemente aktualisieren.
Aber ich kann nicht herausfinden, wie das geht. Wenn ich versuche, es im Code-Behind zu tun, scheint es nicht so, als ob der Event-Handler für die (n-Instanzen der) "Add Pledge" -Schaltfläche auf die betreffenden Steuerelemente verweisen könnte; Wenn ich in XAML versuche, die ListBoxItem-DataTemplate-Steuerelemente an die Felder Family.Pledge (oder Family.Pledge.FirstOrDefault()) zu binden, sind diese Felder immer noch leer, wenn ich das aktuelle Family-Objekt im Ereignishandler für Add anschaue Pledge-Taste.
Irgendwelche Gedanken, wie man das löst? Oder gibt es ein besseres UI-Modell, das ich insgesamt betrachten sollte?
Vielen Dank im Voraus.