.net WPF Datagrid Datatemplate列,带有触发多个更改事件的文本框

.net WPF Datagrid Datatemplate列,带有触发多个更改事件的文本框,.net,wpf,datagrid,textbox,.net,Wpf,Datagrid,Textbox,我使用wpf datagrid来编辑销售条目,如数量、折扣等。我对每个可编辑列使用DataTemplateColumn,并在每个列中使用textbox控件。每个文本框都绑定到DataTable的不同列。在编辑数量时,我必须计算净数量并更新该列,这是通过更新绑定到网格的datatable来完成的。处理每个可编辑文本框的textchanged、lostfocus、gotfocus等内部的所有内容。数据网格选择单元设置为“单元” 现在在使用这种方法时出现了很多问题。有时templatecolumn中t

我使用wpf datagrid来编辑销售条目,如数量、折扣等。我对每个可编辑列使用DataTemplateColumn,并在每个列中使用textbox控件。每个文本框都绑定到DataTable的不同列。在编辑数量时,我必须计算净数量并更新该列,这是通过更新绑定到网格的datatable来完成的。处理每个可编辑文本框的
textchanged
lostfocus
gotfocus
等内部的所有内容。数据网格选择单元设置为“单元”

现在在使用这种方法时出现了很多问题。有时templatecolumn中textbox的
textchanged
事件会多次触发,这会导致所有计算错误


谁能告诉我使用datatemplate列编辑网格的最佳方法是什么?我必须使用文本框本身,因为我们有一个数字键盘控件,它只支持文本框。为什么
textchanged
事件会多次触发?即使我们垂直滚动网格,也会发生这种情况。

您可以在文本框上设置UpdateSourceTrigger=PropertyChanged,并使用以确保用户实际完成键入

默认情况下,在编辑行失去焦点之前,DataGrid不会提交更改。此外,TextChanged在创建TextBox控件并初始填充文本时激发


我猜文本更改是在滚动时触发的,因为虚拟化正在启动,DataGrid正在回收行以显示新对象,并且每个单元格上的文本实际上都在更改。

您可以在文本框上设置UpdateSourceTrigger=PropertyChanged,并使用以确保用户实际完成键入

默认情况下,在编辑行失去焦点之前,DataGrid不会提交更改。此外,TextChanged在创建TextBox控件并初始填充文本时激发

我猜文本更改是在滚动时触发的,因为虚拟化正在启动,DataGrid正在循环行以显示新对象,并且文本实际上在每个单元格上都在更改