2008-12-11 27 views
1

我試圖創建一個linq到wpf的sql關係的主細節視圖。該視圖將有兩個組合框。一個用於選擇主項目,另一個用於選擇詳細項目。使用wpf/linq到sql的主細節綁定

我已經實現了這個使用ADO.Net數據集包含兩個表和表之間的關係。第一個組合框綁定到主域,第二個組合框綁定到關係。

DataContext="{Binding Source={StaticResource ContactDataSet}, Path=Company}" 

<ComboBox Name="comboBox_CompanyName" 
      ItemsSource="{Binding}" 
      DisplayMemberPath="Company" 
      IsSynchronizedWithCurrentItem="True" 
      /> 

詳細信息,Company2Contact是relationsip

<ComboBox Name="comboBox_ContactName" 
      ItemsSource="{Binding Path=Company2Contact}" 
      DisplayMemberPath="Contact"         
      IsSynchronizedWithCurrentItem="True"         
      /> 

我期待實現使用LINQ to SQL類似的結果。如果將wpf datacontext設置爲linqDataContext,我可以綁定到主數據,但不能綁定到關係。

我看過datacontext對象,它似乎已被正確設置。每個公司對象都存在幷包含Contact對象的集合。

有誰知道如何綁定到存儲在所選公司對象中的聯繫人對象的集合?

感謝

回答

2

如果延遲執行裝載啓用(默認),然後在需要的時候你的孩子對象僅檢索(這將是在第二數據綁定訪問它們)。但是,對於工作負載較低的數據上下文需要保持活躍。如果您正在加載主/明細對象,但僅查詢主對象的數據上下文,則此時它實際上不會檢索到詳細信息。

另一種選擇是使用數據上下文的LoadWith選項。您需要指定在加載主對象時還需要詳細對象。

個人我在做什麼(這可能是非常有爭議的),但我傾向於保持DataContext活着爲我的屏幕生活。它使事情變得如此簡單,並且根本沒有性能問題。我在ViewModel中執行此操作。我在那裏保留對DataContext的引用。

+0

同意,保持上下文打開或使用LoadWith選項來獲取初始綁定中的數據。 – Jab 2008-12-11 19:40:28