在我为我的教堂设计的 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:many 关系。而当用户点击“Add Pledge”按钮时,我想创建新的Pledge实例,保存到数据库中,然后刷新两个控件。
但我不知道该怎么做。如果我尝试在代码隐藏中执行此操作,则“添加承诺”按钮的(n 个实例)的事件处理程序似乎无法引用相关控件;在 XAML 中,如果我尝试将 ListBoxItem DataTemplate 控件绑定到 Family.Pledge(或 Family.Pledge.FirstOrDefault())字段,当我查看 Add 事件处理程序中的当前 Family 对象时,这些字段仍然为空承诺按钮。
关于如何解决这个问题的任何想法?或者有没有更好的 UI 模型我应该完全看一下?
提前致谢。