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

填充WPF DataGrid行时遇CS1061错误及空行数设置问题求助

WPF DataGrid CS1061错误解决及空行数设置

一、解决CS1061错误

CS1061错误的核心原因是WPF的DataGrid没有Rows属性,你写的是WinForms DataGrid的代码逻辑。WPF遵循数据绑定设计模式,正确的填充方式如下:

1. 创建数据模型类

定义与DataGrid列对应的实体类,每个属性对应一列数据:

public class ElectionItem
{
    public string Election { get; set; }
    public bool IsDefault { get; set; }
    public string OtherElection { get; set; }
    public string EffectiveDate { get; set; }
    public string FilingDeadline { get; set; }
}

2. 声明可观察集合作为数据源

使用ObservableCollection(而非普通集合),它能自动通知UI更新数据变化:

using System.Collections.ObjectModel;

// 在窗口类中声明数据源
private ObservableCollection<ElectionItem> _electionItems = new ObservableCollection<ElectionItem>();
public ObservableCollection<ElectionItem> ElectionItems => _electionItems;

3. 填充数据到集合

将你的数据转换为ElectionItem对象并添加到集合:

_electionItems.Add(new ElectionItem { Election = "a", IsDefault = false, OtherElection = "Form 1" });
_electionItems.Add(new ElectionItem { Election = "b", IsDefault = false, OtherElection = "Form 2" });
_electionItems.Add(new ElectionItem { Election = "S ", IsDefault = false, OtherElection = "Form 3" });
_electionItems.Add(new ElectionItem { Election = "d ", IsDefault = false, OtherElection = "Form 4" });
_electionItems.Add(new ElectionItem { Election = "e ", IsDefault = false, OtherElection = "Form 5" });
_electionItems.Add(new ElectionItem { Election = "f ", IsDefault = false, OtherElection = "Form 6" });

4. 修改XAML绑定数据源

给DataGrid设置ItemsSource绑定,并为每列指定对应的属性路径:

<DataGrid x:Name="election_grid" Grid.Column="1" Grid.Row="30" Grid.ColumnSpan="6" 
          HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"
          ItemsSource="{Binding ElectionItems}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Election" Width="150" Binding="{Binding Election}"/>
        <DataGridCheckBoxColumn Header="Default?" Width="150" Binding="{Binding IsDefault}"/>
        <DataGridTextColumn Header="Other Election" Width="150" Binding="{Binding OtherElection}"/>
        <DataGridTextColumn Header="Election Effective Date" Width="150" Binding="{Binding EffectiveDate}"/>
        <DataGridTextColumn Header="Date Election must be filed" Width="200" Binding="{Binding FilingDeadline}"/>
    </DataGrid.Columns>
</DataGrid>

5. 设置DataContext让绑定生效

在窗口构造函数中设置DataContext为当前窗口实例:

public MainWindow()
{
    InitializeComponent();
    DataContext = this;
}

临时替代方案(不推荐)

如果不想用数据绑定,可直接通过Items属性添加行,但不符合WPF设计思想,无法支持UI自动更新:

foreach (string[] rowArray in rows)
{
    election_grid.Items.Add(new 
    { 
        Election = rowArray[0], 
        IsDefault = false, 
        OtherElection = rowArray[2],
        EffectiveDate = "",
        FilingDeadline = ""
    });
}

二、设置DataGrid的空行数

1. 关闭默认新增行

WPF DataGrid默认会在末尾显示一行空行用于添加新数据,若要关闭,设置:

<DataGrid ... CanUserAddRows="False" />

2. 添加固定数量的空行

如果需要显示指定数量的空行,直接往数据源集合中添加空的ElectionItem对象即可:

// 示例:添加3个空行
for (int i = 0; i < 3; i++)
{
    _electionItems.Add(new ElectionItem());
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:42:56