私が自分の教会のためにデザインしている WPF ページでは、2 つの Linq-to-Entities クエリの結果にバインドされた 2 つの ListBox コントロールがあります。 2 番目のリストボックス/クエリには、誓約したすべての人々 (および関連する誓約) が含まれます。具体的には:
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 項目がわずかに拡大して誓約のフィールドが表示されるため、誓約の詳細を 2 番目の ListBox に簡単に追加できます。次のようになります。
http://wouldbetheologian.com/images/PledgeManager.jpg (オフサイト画像)
基盤となるデータベースには、「Pledge」テーブルと 1 対多の関係を持つ「Family」テーブルがあります。ユーザーが [誓約を追加] ボタンをクリックすると、新しい誓約インスタンスを作成してデータベースに保存し、2 つのコントロールを更新します。
しかし、私はそれを行う方法を理解できません。コード ビハインドで実行しようとすると、(n インスタンスの) [誓約を追加] ボタンのイベント ハンドラーが問題のコントロールを参照できるようには見えません。XAML で、ListBoxItem DataTemplate コントロールを Family.Pledge (または Family.Pledge.FirstOrDefault()) フィールドにバインドしようとすると、Add のイベント ハンドラーで現在の Family オブジェクトを見ると、これらのフィールドはまだ空です。誓約ボタン。
これを解決する方法について何か考えはありますか?それとも、私が全体的に見るべきより良いUIモデルはありますか?
前もって感謝します。