Я довольно новичок в WPF, и у меня возникла проблема, которую я не могу решить.
Там есть набор данных с двумя таблицами, T1 и T2. T1 имеет рекурсивную структуру, подобную этой
T1Id
ParentId
Имя
и это отношение:
ds.Relations.Add("RecursiveRel",
tables["T1"].Columns["T1Id"],
tables["T1"].Columns["ParentId"]);
Я отображаю эту таблицу в TreeView, связывая ее с DataView:
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>
Это отлично работает и хорошо отображает иерархию в виде дерева.
И теперь в игру вступает таблица T2, которая имеет такую структуру:
T2Id
T1Id
Имя
Между T1 и T2 существует отношение 1: n, где n> = 0. В DataSet добавлено отношение:
ds.Relations.Add("T1ToT2",
tables["T1"].Columns["T1Id"],
tables["T2"].Columns["T1Id"]);
T2 использует DataGrid, и он должен отображать только те записи, которые связаны с текущей выбранной записью T1.
Что должно войти в ItemsSource DataGrid, чтобы это произошло? Я не нашел ничего, что могло бы сделать это.
Я также должен заметить, если это имеет значение, что это приложение MVVM, поэтому выделение кода не вариант.
Любая помощь приветствуется.