C# 如何处理datagrid中的复选框编辑事件
我目前正在进行一个项目,该项目需要在datagrid中选中一些点击事件复选框 所有列和行都是手动生成的。datagrid的最后一列包含复选框,我希望用户选中此复选框。当我要选中此复选框时,会发生异常: PresentationFramework.dll中发生类型为“System.InvalidOperationException”的未处理异常 其他信息:此视图不允许使用“EditItem” 现在,是否需要任何单独的click事件来处理click事件 XAML:C# 如何处理datagrid中的复选框编辑事件,c#,wpf,checkbox,datagrid,click,C#,Wpf,Checkbox,Datagrid,Click,我目前正在进行一个项目,该项目需要在datagrid中选中一些点击事件复选框 所有列和行都是手动生成的。datagrid的最后一列包含复选框,我希望用户选中此复选框。当我要选中此复选框时,会发生异常: PresentationFramework.dll中发生类型为“System.InvalidOperationException”的未处理异常 其他信息:此视图不允许使用“EditItem” 现在,是否需要任何单独的click事件来处理click事件 XAML: <DataGrid
<DataGrid x:Name="single_payment" HorizontalAlignment="Left" ColumnWidth="*" Margin="11,87,0,0" VerticalAlignment="Top" Height="134" Width="261" BorderThickness="0" AutoGenerateColumns="False"/>
C:
通常,复选框具有可能在其列DataGridCheckBoxColumn中公开的选中和未选中事件。如果您需要复选框控件的单击事件,我建议您添加一个模板列而不是复选框列,并在DataTemplate中添加一个复选框。在其中引发Click事件并加以利用 您正在绑定CheckBox.IsChecked到Finich=。。。再想一想。是的,我们可以用它。但那正是我想要的。无论如何,谢谢。
/* setting columns */
DataGridTextColumn c1 = new DataGridTextColumn();
c1.Header = "#";
//c1.IsReadOnly = true;
c1.Width = 10;
c1.Binding = new Binding("Num");
single_payment.Columns.Add(c1);
DataGridTextColumn c2 = new DataGridTextColumn();
c2.Header = "Name";
//c1.IsReadOnly = true;
c2.Binding = new Binding("Start");
single_payment.Columns.Add(c2);
DataGridTextColumn c4 = new DataGridTextColumn();
c4.Header = "Amount";
//c4.IsReadOnly = true;
c4.Binding = new Binding("Amt");
single_payment.Columns.Add(c4);
DataGridCheckBoxColumn c3 = new DataGridCheckBoxColumn();
c3.Header = "Paid";
//c3.IsReadOnly = false;
c3.Binding = new Binding("Finich");
single_payment.Columns.Add(c3);
/* Set columns ends here */
/* set row */
try
{
dbconnection c = new dbconnection();
c.cmd.CommandText = "SELECT * FROM purpose_master WHERE type='otp';";
c.da.Fill(c.dt);
if (c.dt.Rows.Count > 0)
{
for (int col = 0; col < c.dt.Rows.Count; col++)
{
//MessageBox.Show(col.ToString());
single_payment.Items.Add(new Item() { Num = c.dt.Rows[col][0].ToString(), Start = c.dt.Rows[col][1].ToString(), Amt = c.dt.Rows[col][4].ToString(), Finich = "" });
}
}
c.con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
/* set row end */