如何将字典绑定到datagrid wpf

时间:2015-07-02 10:45:28

标签: c# wpf dictionary datagrid

我正在尝试将字典绑定到datagrid,因为现在无法找到明确的方法。 字典键应该是网格标题,其值应该是列数据。 例如 C#代码:

var dictionary  = new Dictionary<string,string>();
dictionary.Add("First Name","Name");
dictionary.Add("Last Name","Last Name");  
dictionary.Add("Phone","+123-123-123");

意思是我希望我的datagrid有3个colunms:

  • 名字
  • 姓氏
  • 电话

有没有办法将具有未知数量的密钥的字典绑定到datagrid? 现在我正在使用Datatable 感谢

2 个答案:

答案 0 :(得分:0)

做你想做的事的最好方法如下:

CodeBehind中,您可以创建Anonymus个对象的列表,如果您没有模型,并且构造函数填充列表并添加到ItemsSource DataGrid }}:

List<Object> mylist = new List<Object>(){
new {FirstName="myfirstName1", LastName="mylastName1", Phone="+123-123-123"},
new {FirstName="myfirstName2", LastName="mylastName2", Phone="+124-124-124"},
new {FirstName="myfirstName3", LastName="mylastName3", Phone="+125-125-125"}
}

this.myDataGrid.ItemsSource = myList;

XAML中,您输入以下代码,作为DataGrid的声明:

<DataGrid x:Name="MyDataGrid" AutoGenerateColumns="false"   >
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding FirsName}" Header="First name"  />
        <DataGridTextColumn Binding="{Binding LastName}" Header="Last name"  />
        <DataGridTextColumn Binding="{Binding Phone}" Header="Phone"  />
    </DataGrid.Columns>
</DataGrid>

答案 1 :(得分:0)

我会尝试更具体。 让我说我得到一个对象列表,例如表格。 每个表可以具有不同的数据结构和不同的行数。 所以我不能绑定任何数据结构。 现在我找到的最好的解决方案是通过网格绑定到DataTable

var selectedTable = new DataTable();
        if (tableEntities.Any())
        {
            var colunms = table.Properties;
            foreach (var colunm in colunms)
            {
                selectedTable.Columns.Add(colunm.Key);
            }

            foreach (var entity in tableEntities)
            {
                var row = selectedTable.NewRow();
                foreach (var property in entity.Properties)
                {
                    row[property.Key] = property.Value.GetStringValue();
                }
                selectedTable.Rows.Add(row);
            }

但我不喜欢这个解决方案

相关问题