2015-07-02 164 views
0

我想将一个字典绑定到datagrid,现在找不到明确的做法if。 字典键应该是网格标题,其值应该是列数据。 例如 C#代码:如何将字典绑定到datagrid wpf

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的方法? 现在我使用的数据表,而不是 感谢

+0

的方式将其定义这个数据网格将始终只有1行其犯规使很有道理 – apomene

回答

0

做你想做什么会是如下的最佳方式:

CodeBehind,您可以创建Anonymus对象的列表,如果你不有模型,和int构造填充列表,并加入到ItemsSourceDataGrid的:

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> 
+0

我想我第一次不清楚,字段(键)的数量是未知的。 –

+0

我想我第一次不清楚,字段(键)的数量是未知的,也没有名字。如果生病与匿名对象工作,病态仍然必须创建一个具有定义属性的对象。 –

+0

你试图做什么?你可以告诉我这个解决方案的目的是什么? –

0

我会尽量做得更具体。 让我说我得到一个例如表的对象列表。每个表可以有不同的数据结构和不同数量的行。 所以我不能绑定到任何数据结构。 现在最好的解决办法,我发现是网格绑定到数据表

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); 
      } 

,但我不喜欢这种解决方案