我正在尝试将字典绑定到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 感谢
答案 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);
}
但我不喜欢这个解决方案