Я пытаюсь отобразить DataTable на DataGrid, который имеет два столбца.
Когда я обновляю DataTable, DataGrid показывает новые строки, но ячейки пусты. Я просмотрел много разных возможных решений для этого и до сих пор не смог отобразить результаты.
Вот мой код xaml для DataGrid:
<DataGrid x:Name="SubjectsList" Height="500" ScrollViewer.CanContentScroll="True" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Subject" Width="2*"/>
<DataGridTextColumn Header="Weekly" Width="*"/>
</DataGrid.Columns>
</DataGrid>
Ниже приведен мой код C # для обновления таблицы:
public void AddSubject(object sender, RoutedEventArgs e)
{
Subject temp = new Subject(SubjectName.Text, Convert.ToInt32(PerWeek.Text));
subjects.Add(temp);
MessageBox.Show(temp.Name + " has been added");
for(int i = 0; i < subjectsTable.Rows.Count; i++)
{
subjectsTable.Rows.RemoveAt(i);
}
foreach (Subject subject in subjects)
{
DataRow dataRow = subjectsTable.NewRow();
dataRow[0] = subject.Name;
dataRow[1] = subject.ClassesPerWeek;
subjectsTable.Rows.Add(dataRow);
MessageBox.Show(subject.Name);
}
SubjectsList.ItemsSource = subjectsTable.DefaultView;
}
В приведенном выше коде SubjectsList
- это моя DataGrid, а subjectsTable
- это моя DataTable.
Я пробовал следующее:
- Используйте
DataGrid.DataContext
вместо DataGrid.ItemSource
- Добавлено
ItemSource = "{Binding Path=subjectsTable}"
в моем коде xaml
- Попытка добавить строки как элементы, используя
DataGrid.Items.Add(dataRow)
- Добавлен метод
getter
и setter
для каждого члена данных моего пользовательского класса Subject
- Все мои переменные, члены данных и структуры данных являются общедоступными.
Если кто-нибудь знает, как сделать данные видимыми, то, пожалуйста, помогите мне. Спасибо.
Вот что происходит после добавления двух предметов:
![Output of DataGrid](https://i.stack.imgur.com/S6HTi.png)