WPF Datagrid Datatemplate列,文本框触发多个更改事件

时间:2012-11-16 04:56:17

标签: .net wpf datagrid textbox

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以在文本框中设置UpdateSourceTrigger = PropertyChanged,并使用RowEditEnding确保用户确实已完成输入。

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

我猜你滚动时会触发TextChanged因为虚拟化正在进行中,DataGrid会回收行以呈现新对象,而文本实际上正在每个单元格上发生变化。

相关问题