Привязка к TreeView и DataGrid - PullRequest
       0

Привязка к TreeView и DataGrid

2 голосов
/ 30 октября 2011

Я довольно новичок в 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, поэтому выделение кода не вариант.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 31 октября 2011

Вы пробовали это?

<DataGrid ItemsSource="{Binding SelectedItem.T1ToT2, ElementName=theTreeView}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...