在 WPF 中绑定和显示字典的字典

Binding and displaying a dictionary of dictionaries in WPF

我有一个字典,我想在数据网格中显示它。

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

"inner" 词典都共享一组给定的 KeyTypeB 的相同键,这应该成为行 headers。

这个问题与this SO question有关,但不同的是我直到运行时才知道密钥。

您可以使用 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 答案)。