1

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

现在使用这种方法时会出现很多问题。有时textchanged模板列中的文本框事件会多次触发,这会使所有计算都出错。

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

4

1 回答 1

1

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

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

我猜当你滚动时 TextChanged 会被触发,因为虚拟化正在启动,DataGrid 正在回收行以呈现新对象,并且每个单元格上的文本实际上都在变化。

于 2012-11-16T10:30:39.003 回答