В моем решении я создаю два списка
var listColumnNames = new List<KeyValuePair<string, string>>();
и
var listValues = new List<List<string>>();
, где я добавляю данные путем перебора входного набора данных. Оба списка построены нормально и содержат ожидаемые данные. Впоследствии я использую два цикла for для добавления данных в DataTable. DataTable создается как private DataTable _selectedFeaturesDataTable = new DataTable();
и позже, в рамках задачи, в которой я создаю и заполняю два списка сверху, я пишу следующее после того, как списки получили все данные:
_selectedFeaturesDataTable = new DataTable();
foreach (var col in listColumnNames)
{
_selectedFeaturesDataTable.Columns.Add(new DataColumn(col.Key, typeof(string)) { Caption = col.Value });
}
foreach (var row in listValues)
{
var newRow = _selectedFeaturesDataTable.NewRow();
newRow.ItemArray = row.ToArray();
_selectedFeaturesDataTable.Rows.Add(newRow);
}
Отладка кода Я вижу, что ItemArray newRow
содержит правильные данные во время итераций, также все значения имеют тип string. Некоторые из столбцов в ItemArray содержат пустые строки, но я не могу себе представить, в чем проблема.
Строка _selectedFeaturesDataTable.Rows.Add(newRow);
проходит через корыто и, глядя на свойство Rows
DataTable
, я вижу приращение счетчиков на каждой итерации. Тем не менее, свойство List
для Rows
в DataTable
все еще имеет значение null.
В настоящее время есть исключения и никаких жалоб, но данные не могут быть найдены в DataTable
, в то время как столбцы получают значения из списка.
Кроме того, компонент в пользовательском интерфейсе даже не отображает имена столбцов.
Наконец, вот способ определения DataGrid в xaml и свойства, которое я использую для привязки.
1027 * XAML *
<DataGrid x:Name="winDataTable" Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" HeadersVisibility="Column"
IsReadOnly="True" SelectionMode="Single" AutoGenerateColumns="True"
ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ItemsSource="{Binding Path=SelectedFeatureDataTable, Mode=OneWay}">
Определение свойства
public DataTable SelectedFeatureDataTable
{
get
{
return _selectedFeaturesDataTable;
}
set
{
SetProperty(ref _selectedFeaturesDataTable, value, () => SelectedFeatureDataTable);
}
}
Почему данные не добавляются в объект DataTable, даже если ItemArray содержит значения?