C# 为每次单击按钮向DATAGrid添加一行

C# 为每次单击按钮向DATAGrid添加一行,c#,wpf,C#,Wpf,对于每次单击按钮,我都需要将列表内容添加到WPF中数据网格视图的新行中 下面是代码,但没有给出确切的行为 public class DisplayTable { public int AnalyteId { get; set; } public int UnitCode { get; set; } public int ReferenceValue { get; set; } } DisplayTable d = new DisplayTable();

对于每次单击按钮,我都需要将列表内容添加到WPF中数据网格视图的新行中

下面是代码,但没有给出确切的行为

public class DisplayTable
{
    public int AnalyteId { get; set; }
    public int UnitCode { get; set; }
    public int ReferenceValue { get; set; }

}


    DisplayTable d = new DisplayTable();
    List<DisplayTable> list = new List<DisplayTable>();
    private void btnAddAnalyte_Click(object sender, RoutedEventArgs e)
    {
        foreach (CheckBox item in this.AnalyteLitst.Items)
        {

            if (item.IsChecked == true)
            {
                d.AnalyteId = 1;

            }
        }


        foreach (CheckBox unit in this.UnitsList.Items)
        {


            if (unit.IsChecked == true)
            {
                d.UnitCode = 12;

            }

        }
        list.Add(d);
        dataGrid.AutoGenerateColumns = true;
        dataGrid.IsReadOnly = false;

        dataGrid.RowHeight = 30;
        dataGrid.ColumnWidth = 100;
        dataGrid.ItemsSource = list;
        dataGrid.CanUserAddRows = true;

  }
公共类显示表
{
公共int分析ID{get;set;}
公共整数单位代码{get;set;}
public int ReferenceValue{get;set;}
}
DisplayTable d=新的DisplayTable();
列表=新列表();
私有无效btnAddAnalyte_单击(对象发送者,路由目标e)
{
foreach(此.AnalyteLitst.Items中的复选框项)
{
如果(item.IsChecked==true)
{
d、 分析物d=1;
}
}
foreach(此.UnitsList.Items中的复选框unit)
{
如果(unit.IsChecked==true)
{
d、 单位代码=12;
}
}
列表.添加(d);
dataGrid.AutoGenerateColumns=true;
dataGrid.IsReadOnly=false;
dataGrid.RowHeight=30;
dataGrid.ColumnWidth=100;
dataGrid.ItemsSource=列表;
dataGrid.CanUserAddRows=true;
}

在视图的构造函数中设置
数据网格的
项资源
。还将其设置为
observateCollection
,并在事件处理程序中将新对象添加到此对象:

ObservableCollection<DisplayTable> list = new ObservableCollection<DisplayTable>();
public MainWindow()
{
    InitializeComponent();
    dataGrid.AutoGenerateColumns = true;
    dataGrid.IsReadOnly = false;
    dataGrid.RowHeight = 30;
    dataGrid.ColumnWidth = 100;
    dataGrid.ItemsSource = list;
    dataGrid.CanUserAddRows = true;
}

private void btnAddAnalyte_Click(object sender, RoutedEventArgs e)
{
    DisplayTable d = new DisplayTable();
    foreach (CheckBox item in this.AnalyteLitst.Items)
    {
        if (item.IsChecked == true)
        {
            d.AnalyteId = 1;
        }
    }

    foreach (CheckBox unit in this.UnitsList.Items)
    {
        if (unit.IsChecked == true)
        {
            d.UnitCode = 12;
        }
    }
    list.Add(d);
}
ObservableCollection列表=新的ObservableCollection();
公共主窗口()
{
初始化组件();
dataGrid.AutoGenerateColumns=true;
dataGrid.IsReadOnly=false;
dataGrid.RowHeight=30;
dataGrid.ColumnWidth=100;
dataGrid.ItemsSource=列表;
dataGrid.CanUserAddRows=true;
}
私有无效btnAddAnalyte_单击(对象发送者,路由目标e)
{
DisplayTable d=新的DisplayTable();
foreach(此.AnalyteLitst.Items中的复选框项)
{
如果(item.IsChecked==true)
{
d、 分析物d=1;
}
}
foreach(此.UnitsList.Items中的复选框unit)
{
如果(unit.IsChecked==true)
{
d、 单位代码=12;
}
}
列表.添加(d);
}

@KarthikVenkatraman,数据行。1<代码>列表列表
应为
可观察集合列表
,因为可观察集合可以通知DataGrid添加的新项目2<代码>显示表d=新的显示表()应该在Btnadanalyte_Click方法中,因为目标是添加新行,而不是多次重复同一项