У меня есть Datagrid, который динамически создается из входящих данных с использованием следующего:
TableData = JObject.Parse(File.ReadAllText(@"Datainfo.json"));
var listCols = new List<DataColumn>();
var rawData = new DataTable();
foreach (dynamic item in TableData.data)
{
string columnName = item.Column;
var column = new DataColumn(columnName);
string DataType = item.DataType;
if (DataType == "Int" )
{
column.DataType = Type.GetType("System.Int32");
}
else
{
column.DataType = Type.GetType("System.String");
}
column.Unique = false;
column.AllowDBNull = true;
column.AutoIncrement = false;
listCols.Add(column);
rawData.Columns.Add(column);
}
Затем я отправляю его в DataGrid следующим образом:
DataTable ETL = null;
ETL = rawData;
ETL.DefaultView.AllowEdit = true;
DataGridView.DataContext = ETL;
Я бынапример, добавить StackPanel в каждый столбец, который включает в себя TextBox для имени столбца и раскрывающийся список с различными типами данных.Тогда у него будет опция Apply / Cancel.
Я пытался следовать аналогичным решениям для добавления расширителей в гриды, но я не могу понять, как применить его к DataGrid, так как он не имеетот .Children()
до .Add()
до.https://www.codeproject.com/Questions/877973/How-Do-I-Add-A-Stackpanel-To-An-Expander-Header-Vi
Есть ли способ сделать то, что я прошу?Я также пытался скрыть строку заголовка и контролировать первые две строки, но затем, когда я попытался загрузить заголовок в столбец Int, я получил ошибку, так что, очевидно, это не очень хорошая идея.