Как отобразить две таблицы в виде таблицы / дерева, отображая столбцы для родительской и дочерней таблиц (при расширении дочерних) - PullRequest
3 голосов
/ 19 января 2011

Я пытаюсь использовать TreeView / DataGrid для отображения некоторых данных.Мне нужно отображать столбцы для элементов верхнего уровня, но также отображать заголовок для расширенного уровня.

У меня есть набор данных с двумя таблицами, например, «Заказы» и «Предметы», у элементов есть внешний ключ к «Заказам».

Dataset from Visual Studio

Я пытаюсь привязать набор данных к представлению таблицы данных / дерева, чтобы показать список заказов.

В WinFrom DataGrid можно отобразить несколько таблиц изDataSet:

Data Grid Example

, который я установил с помощью:

dataGrid.DataSource = dataSet;
dataGrid.DataMember = "Orders";

При нажатии [+] строка расширяется, чтобы показать ссылку:

Expanded DataGrid

Если перейти по этой ссылке, откроется таблица предметов:

DataGrid Items shown

То, что мне нужно, это сочетание обоих, но в WPF:

Merged

Я использовал набор данных для этого примера, но я могу объединить свои данные в коллекции и т.д., которые WPF может использовать для отображения данных так, как я пытаюсь достичь.

Я посмотрел на TreeListView , который дает мне заголовки элементов верхнего уровня, но я чешу голову, пытаясь получитьрасширенный заголовок элементов для отображения.Кто-нибудь может указать мне правильное направление, спасибо.

Обновление Я вернулся к рассмотрению этой проблемы.Согласно ответу @ offapps-cory, я попытался использовать ListView с расширителем со списком.1-я попытка:

enter image description here

Как вы можете видеть, она расширяется в ячейке :) Я думаю, что, может быть, я смогу добавить дерево в микс ...

1 Ответ

2 голосов
/ 26 января 2011

Не могли бы вы вместо этого использовать ListBox с ListViews, вложенными в элементы?Хотя у меня не было вложенных ListViews, я вложил ListBoxes на несколько уровней вглубь для достижения необходимой мне функциональности.

Первоначально я думал, что можно сделать так, как вы просите, настроив шаблон TreeViewItem и ItemsPresenter, ноItemsPresenter ожидает Panel, а ListView - это элемент управления.

Я бы попробовал создать DataTemplate с ListView / GridView и экспандером.Возможно, вам понадобится сделать забавную привязку к данным, чтобы она заработала, но я не понимаю, почему это не сработает.

...