有人在UWP中有一个绑定到数据网格的动态列数的示例项目吗?在WPF中,我可以使它与Telerik Datagrid一起用于可观察的动态对象集合。但是在UWP中,Telerik不支持动态对象。我尝试使用Windows Community Toolkit数据网格,但也失败了。
答案 0 :(得分:1)
绑定到UWP数据网格的动态列数(Windows社区工具包)
源自Samed Bejtovic的reply。我们可以使用 Windows社区工具包 DataGrid
在代码后增加动态列数。例如,在填充DataGrid
之前,我们需要将集合转换为DataTable
。以下是加载csv文件并将数据插入DataTable
。
var dt = new DataTable();
bool firstLine = true;
var sr = new StreamReader("Assets\\Archive.csv");
while (sr.Peek() >= 0)
{
if (firstLine)
{
firstLine = false;
var cols = sr.ReadLine().Split(',');
foreach (string col in cols)
dt.Columns.Add(new DataColumn(col, typeof(string)));
}
else
{
var data = sr.ReadLine().Split(',');
dt.Rows.Add(data);
}
}
然后我们调用FillDataGrid(dt,MyDataGrid)
,它可以基于Columns
之上将DataGrid
添加到DataTable
中。
public static void FillDataGrid(DataTable table, DataGrid grid)
{
grid.Columns.Clear();
for (int i = 0; i < table.Columns.Count; i++)
{
grid.Columns.Add(new DataGridTextColumn()
{
Header = table.Columns[i].ColumnName,
Binding = new Binding { Path = new PropertyPath("[" + i.ToString() + "]") }
});
}
var collection = new ObservableCollection<object>();
foreach (DataRow row in table.Rows)
{
collection.Add(row.ItemArray);
}
grid.ItemsSource = collection;
}
答案 1 :(得分:0)
DataCollection = new ObservableCollection<dynamic>();
while (reader.Read())
{
string project = reader.GetString(0);
decimal number = reader.GetDecimal(1);
DataCollection.Add(new DataSummary(project, number));
}
Datagrid支持自动生成的列。将项目来源设置为集合。 https://www.reddit.com/r/UWP/comments/djzcqj/display_datatable_as_datagrid/?utm_source=share&utm_medium=web2x