You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向DataGrid添加新行后行内容显示空白的问题如何解决?

问题原因

DataGrid的文本列默认需要指定绑定路径才能读取数据源的值,你当前的XAML未给DataGridTextColumn设置Binding属性,且数组类型的元素需要按索引绑定才能读取对应位置的值,因此出现空白行。

解决方法

方法1:直接适配现有数组添加逻辑

仅修改XAML代码,给列绑定数组的对应索引即可正常显示:

<Grid>
    <DataGrid x:Name="MessageDataGrid">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Naam" Binding="{Binding [0]}" />
            <DataGridTextColumn Header="Bericht" Binding="{Binding [1]}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

修改后你原有的C#添加代码无需改动即可正常显示内容。

方法2:使用实体类(更推荐)

这种方法可维护性更强,适合业务场景使用:

  1. 首先自定义数据实体类
public class MessageItem
{
    public string Naam { get; set; }
    public string Bericht { get; set; }
}
  1. 修改XAML列绑定为对应属性名
<Grid>
    <DataGrid x:Name="MessageDataGrid">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Naam" Binding="{Binding Naam}" />
            <DataGridTextColumn Header="Bericht" Binding="{Binding Bericht}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>
  1. 修改添加行的逻辑
this.MessageDataGrid.Items.Add(new MessageItem 
{ 
    Naam = "hi", 
    Bericht = "bye" 
});

最佳实践

如果需要频繁增删数据,建议使用ObservableCollection<T>作为数据源,集合变动时UI会自动同步更新:

// 窗口全局定义可观察集合
public ObservableCollection<MessageItem> MessageList { get; set; } = new ObservableCollection<MessageItem>();

// 窗口初始化时绑定数据源
public MainWindow()
{
    InitializeComponent();
    MessageDataGrid.ItemsSource = MessageList;
}

// 新增数据直接操作集合即可
private void AddRow()
{
    MessageList.Add(new MessageItem 
    { 
        Naam = "hi", 
        Bericht = "bye" 
    });
}

内容的提问来源于stack exchange,提问作者Brekers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:24:03