2015-07-29 4 views
0

У меня есть словарь словарей, которые я хочу отображать в сетке данных.Связывание и отображение словаря словарей в WPF

var data = new Dictionary<KeyTypeA, Dictionary<KeyTypeB, string>>(); 

«Внутренние» словари все одни и те же ключи от заданного набора KeyTypeB-х, которые должны стать заголовками строк.

Вопрос связан с this SO question, но разница в том, что я не знаю ключей до времени исполнения.

+0

Просто упакуйте его в DataTable – Paparazzi

+0

@Frisbee DataTables шов, предназначенный в первую очередь для WinForms. Например. см. http://stackoverflow.com/questions/19253459/how-do-you-create-a-datatable-in-wpf#comment28501654_19253459 – Onur

+0

Купить гласный в System.Data. Да, это было мое -1 – Paparazzi

ответ

1

Вы можете использовать DataGrid и построить коллекцию DataGridColumn в коде следующим образом (где ColumnCollection является ObservableCollection<DataGridColumn>):

foreach (string columnName in columns) 
{ 
    ColumnCollection.Add(new DataGridTextColumn() 
          { 
           Header = columnName, 
           Binding = new Binding(String.Format("[{0}]", columnName)) 
          }); 
} 

Вы должны выяснить, как получить columns коллекцию основано на вас словарей и типов.

Затем вам необходимо привязать столбцы ColumnCollection к столбцам DataGrid (см. this SO ответ для этого).

+0

это примерно решение, с которым я закончил. – Onur

+0

Отлично. Это сработало для меня очень хорошо. Вы можете даже принять его дальше, введя стили, форматирование ... и т. Д. При построении столбцов в коде. – KornMuffin

+0

Единственным недостатком является то, что вам нужна ссылка на элемент управления в модели просмотра, что возможно, но это то, чего я бы хотел избежать. – Onur

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