저는 WPF를 처음 접했고 해결할 수없는 문제가 있습니다. T1과 T2라는 두 개의 테이블이있는 데이터 집합이 있습니다.TreeView 및 DataGrid에 바인딩
ds.Relations.Add("RecursiveRel",
tables["T1"].Columns["T1Id"],
tables["T1"].Columns["ParentId"]);
내가 DataView를에 결합하여 트 리뷰에서이 테이블을 표시하고 있습니다 : T1이
T1Id
ParentId
이름
이 관계 같은 순환 구조를 가지고
DvT1 = ds.Tables[0].DefaultView;
DvT1.RowFilter = string.Format("Id = '{0}'", IdOfFirstRecord);
및 XAML :
<TreeView ItemsSource="{Binding DvT1}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding RecursiveRel}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
이렇게하면 잘 작동하고 트리 뷰에 계층 구조가 잘 표시됩니다. 1가
T2Id T1Id 이름
:
그리고 지금 테이블 T2는 이러한 구조를 갖는 재생하게된다 여기서 n> = 0 릴레이션왔다 T1과 T2 사이의 관계
ds.Relations.Add("T1ToT2",
tables["T1"].Columns["T1Id"],
tables["T2"].Columns["T1Id"]);
T2는 DataGrid를 사용하며 T2는 현재 선택된 T1 레코드에 연결된 레코드 만 표시해야합니다. DataGrid의 ItemsSource를 실행하려면 어떻게해야합니까? 나는 이것을 할만한 것을 찾지 못했습니다. MVVM 응용 프로그램이라는 점에 유의해야합니다. 코드 숨김은 옵션이 아닙니다.
도움을 주시면 대단히 감사하겠습니다.
MVVM 응용 프로그램 인 경우 왜 이러한 이상한 테이블과 관계를 사용합니까? 모델을 보거나 데이터 세트 및 기타 동적 뷰 대신 실제 속성 및 관찰 가능한 컬렉션을 사용하도록 모든 모델을 변환하는 것이 좋습니다. – vorrtex
이것은 원격 시스템 (비 Microsoft)에서 데이터를 수신하는 방법입니다. 왜이 테이블이 이상합니까? T1의 재귀 구조 때문에? – JKO
문자열 리터럴 및 대괄호 때문에 처음에는 각 데이터 모델에 대한 뷰 모델을 만드는 것이 더 낫습니다. 왜냐하면'class T1ViewModel {public ObservableCollection T2Items {get; 세트; }}'훨씬 쉽고 편리합니다. –
vorrtex