2013-04-22 3 views
0

У меня есть запрос, где мне нужно спроектировать экран WPF с использованием MVVM. Этот экран имеет два DataGrids.WPF MVVM Динамически привязывать столбцы datagrid к коллекции

Первый datagrid будет привязан к коллекции, в которой datagrid сможет добавлять или удалять элементы из нее.

Теперь сложной частью является то, что мне нужен второй DataGrid, чтобы его столбцы автоматически генерировались из элементов коллекции, к которым привязан первый datagrid.

Пример:

Если первый DataGrid имеет три линии:

| Value 1 | 
| Value 2 | 
| Value 3 | 

мне нужен второй DataGrid, чтобы эти три колонки:

| Value 1 | Value 2 | Value 3 | 

Однако я пытаюсь подумайте о способе реализации этого, который не включает в себя ручное добавление этих столбцов ко второму datagrid, потому что я считаю, что убьет «способ MVVM» на выполнение по двум причинам:

  1. Я хочу файл кода для моего зрения, чтобы остаться «пустой» (я не могу добавить код, чтобы он другой, чем автоматически генерируется «InitializeComponent()» на конструктор вида)

  2. Я не могу позволить моей модели ViewModel фактически ссылаться на DataGrid, так как я считаю, что это создало бы сильную связь от View до ViewModel.

Из-за этих двух причин, кто-нибудь знает способ сделать это с участием только привязок (или другие решения, которые не нарушают эти два правила?)

+1

Возможный дубликат? http://stackoverflow.com/questions/4367264/prism-mvvm-binding-columns-to-datagrid – ChrisO

ответ

0
  1. свяжите DataTable к first DataGrid.
  2. Затем transpose DataTable (строки и столбцы Exchange) и привязать его к DataGrid second.

Здесь необходимо установить AutoGeneratedColumns свойство DataGrid на true.

Пожалуйста, посмотрите на это article, чтобы транспонировать DataTable.

Here - это простое решение для привязки DataTable к DataGrid.

Если вы уже привязал Collection к первому DataGrid, вы можете определить new DataTable и logically assigned значения из коллекции, а затем вы можете связать DataTable в DataGrid тоже.

Смежные вопросы