На странице WPF, которую я разрабатываю для своей церкви, у меня есть два элемента управления ListBox, связанные с результатами двух запросов Linq-to-Entities: первый список / запрос содержит всех людей, которые еще не объявили год, второй список / запрос содержит всех людей, которые объявили (и связанные с ними обязательства). В частности:
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 };
Когда пользователь приложения выбирает семейство из первого ListBox, элемент ListBox немного расширяется, чтобы показать поля для залога, так что легко добавить детали залога во второй ListBox. Это выглядит примерно так:
http://wouldbetheologian.com/images/PledgeManager.jpg
(внешнее изображение)
Базовая база данных (помимо прочего) имеет таблицу «Семейство» с отношением 1: много к таблице «Залог». И когда пользователь нажимает кнопку «Добавить залог», я хотел бы создать новый экземпляр залога, сохранить его в базе данных и затем обновить два элемента управления.
Но я не могу понять, как это сделать. Если я попытаюсь сделать это в коде, это не похоже на то, что обработчик события для (n-экземпляров) кнопки «Добавить залог» может ссылаться на рассматриваемые элементы управления; и в XAML, если я пытаюсь привязать элементы управления ListBoxItem DataTemplate к полям Family.Pledge (или Family.Pledge.FirstOrDefault ()), эти поля все еще остаются пустыми, когда я смотрю на текущий объект Family в обработчике события для Add Кнопка залога.
Есть мысли, как это решить? Или есть лучшая модель пользовательского интерфейса, на которую я должен смотреть в целом?
Заранее спасибо.