2008-12-11 6 views
1

wpf에서 linq to sql 관계의 마스터 세부 정보보기를 만들려고합니다. 보기에는 두 개의 콤보 상자가 있습니다. 하나는 마스터 항목을 선택하고 다른 하나는 세부 항목을 선택합니다.wpf/linq to SQL을 사용하여 마스터 세부 바인딩

두 개의 테이블과 테이블 간의 관계를 포함하는 ADO.Net Dataset을 사용하여이 작업을 수행했습니다. 첫 번째 콤보 상자는 마스터 필드에 바인딩되고 두 번째 콤보 상자는 관계에 바인딩됩니다.

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

마스터

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

세부 정보, Company2Contact 내가 SQL에 LINQ를 사용하여 유사한 결과를 달성하기 위해 찾고 오전 relationsip

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

입니다. wpf datacontext를 linqDataContext로 설정하면 마스터 데이터에 바인딩 할 수 있지만 관계에 바인딩 할 수는 없습니다.

datacontext 개체를 보았습니다. 올바르게 설정 한 것으로 보입니다. 각 회사 객체가 존재하며 Contact 객체의 모음을 포함합니다.

누구든지 선택한 회사 개체에 저장된 연락처 개체 모음에 바인딩하는 방법을 알고 있습니까? 필요할 때

감사 defered 로딩 (기본적으로)을 사용하는 경우

답변

2

은 다음 자식 개체 만 검색됩니다 (이는 될 때 두 번째 데이터 바인딩 액세스 그들). 그러나 작업을 수행하기 위해로드를 지연 시키려면 datacontext가 살아 있어야합니다. 마스터/디테일 오브젝트를로드하고 있지만 마스터 오브젝트의 datacontext를 조회하는 경우에는 실제로이 시점에서 세부 사항을 검색하지 않습니다.

다른 옵션은 데이터 컨텍스트의 LoadWith 옵션을 사용하는 것입니다. 마스터 오브젝트를로드 할 때 상세 오브젝트가 필요한 것을 지정해야합니다.

개인적으로 내가하고있는 일 (아마도 이것은 매우 논쟁의 여지가있다)이지만 내 화면의 수명 동안 DataContext를 유지하는 경향이있다. 일이 훨씬 쉬워지고 실제로 전혀 성능이 떨어지지 않습니다. 내 ViewModel에서이 작업을 수행합니다. 거기에있는 DataContext에 대한 참조를 유지합니다.

+0

동의합니다. 컨텍스트를 열어 두거나 LoadWith 옵션을 사용하여 초기 바인딩에서 데이터를 가져옵니다. – Jab

+0

답변 해 주셔서 감사합니다. 어떤 옵션을 권하고 싶습니까? –

+0

답변에 대한 추가 참고 사항보기 – Micah

관련 문제