Вложенные WPF DataGrids - PullRequest
       7

Вложенные WPF DataGrids

7 голосов
/ 16 мая 2009

У меня есть DataGrid (из набора инструментов), и я хочу вложить еще один DataGrid в DataGrid.RowDetailsTemplate. Хитрость заключается в том, что я хочу вернуть данные из одной таблицы в основную сетку, а затем на основе выбора строки пойти и получить дополнительную информацию из другой таблицы и показать ее в DataGrid в подробном шаблоне.

Это достаточно легко сделать в двух отдельных DataGrids, но у меня возникают проблемы с его работой с вложенной версией.

Это вообще возможно? Если так, может кто-то указать мне правильное направление. Я должен отметить, что я использую операторы LinqToSql для заполнения данных.

Спасибо за ваше внимание. -Joel

1 Ответ

5 голосов
/ 29 октября 2009

Если вы используете LinqToSQL, вы можете легко сделать это, используя ассоциацию. В своей практике я создал две таблицы:

GuyTable

  • Имя
  • Фамилия
  • UniqueID

GuyActionsTable

  • UniqueID
  • GuyID
  • Описание действия

Я создал отношение «один ко многим» от GuyTable.UniqueID к GuyActionsTable.GuyID под названием «GuyActions»

Затем я связываю свою DataGrid следующим образом. Извините за любые ошибки, поскольку я делаю это вручную:

<w:DataGrid ItemsSource={Binding Source={StaticResource YourDataSource}}>
<w:DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <w:DataGrid ItemsSource={Binding GuyActions}>
            <w:DataGrid.Columns>
                <w:DataGridTextColumn Header="Action" DisplayMemberBinding="{Binding Action_Description}" />
            </w:DataGrid.Columns>
        </w:DataGrid>
    </DataTemplate>
</w:DataGrid.RowDetailsTemplate>
<w:DataGrid.Columns>
    <w:DataGridTextColumn Header="First Name" DisplayMemberBinding="{Binding First_Name}" />
    <w:DataGridTextColumn Header="Last Name" DisplayMemberBinding="{Binding Last_Name}" />
</w:DataGrid.Columns>

...