C# 为每次单击按钮向DATAGrid添加一行
对于每次单击按钮,我都需要将列表内容添加到WPF中数据网格视图的新行中 下面是代码,但没有给出确切的行为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();
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方法中,因为目标是添加新行,而不是多次重复同一项