gpt4 book ai didi

c# - DataGrid 添加行但文本不可见

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:40 25 4
gpt4 key购买 nike

我正在尝试将 DataTable 显示到具有两列的 DataGrid 上。

当我更新 DataTable 时,DataGrid 显示新行但单元格为空。为此,我查看了许多不同的可能解决方案,但仍无法显示结果。

这是我的 DataGrid xaml 代码:

<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。

我尝试了以下方法:

  1. 使用 DataGrid.DataContext 而不是 DataGrid.ItemSource
  2. 在我的 xaml 代码中添加了 ItemSource = "{Binding Path=subjectsTable}"
  3. 尝试使用DataGrid.Items.Add(dataRow)将行添加为项目
  4. 为我的用户定义类 Subject 的每个数据成员添加了一个 gettersetter 方法
  5. 我所有的变量、数据成员和数据结构都是公开的。

如果有人知道如何使数据可见,请帮助我。谢谢。

这是我添加两个主题后发生的情况:

Output of DataGrid

最佳答案

您需要为 DataGrid 中的每一列指定绑定(bind)。

绑定(bind)路径将是 DataTable 中列的名称。

假设您的 DataTable 列是这样定义的(您还没有显示这个所以我不得不举个例子):

subjectsTable.Columns.Add("NameColumn", typeof(string));
subjectsTable.Columns.Add("ClassesColumn", typeof(int));

XAML 中的 DataGrid 列定义应如下所示:

<DataGridTextColumn Header="Subject" Width="2*" Binding="{Binding NameColumn}"/>
<DataGridTextColumn Header="Weekly" Width="*" Binding="{Binding ClassesColumn}"/>

替代方法 是将 DataGrid 的 AutoGenerateColumns 属性设置为 true 并省略 XAML 中的列定义。但是你对网格没有那么多的控制权。

关于c# - DataGrid 添加行但文本不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com