仅在全行提交后才使WPF DataGrid创建新项目

问题描述 投票:1回答:1

我正在使用的代码使用WPF DataGrid来存储条目表,该条目表绑定到项目的ObservableCollection,并且用户可以使用表底部的空白行来创建新项目。

当用户在新行中选择一个单元格时,就在他们键入第一个按键时,DataGrid将创建一个新的空白项并将其插入ObservableCollection中。用户单击Enter或将焦点移到该单元格之外时,新文本将作为对该项目的编辑而提交。

是否有任何方法可以更改DataGrid的行为,以便在用户完成输入之前不会创建空白项目?或者,至少在提交该行之后,才将空白项目添加到ObservableCollection中。我想这样做,以便仅在发生全行提交之后才将新项目添加到ObservableCollection中,这意味着添加到Collection的每个新项目中都已经有数据,而不是将其插入空白和然后再编辑。

我一直在寻找答案,但似乎没有其他人遇到这个问题。

之所以需要此功能,是因为我正在此DataGrid中实现“撤消”功能,但是当新行被添加为空白然后在以后进行编辑时,总是以两次更改而告终,这意味着用户需要执行两个“撤消”操作以删除它们刚刚创建的行。这一点都不直观。

谢谢。

我正在使用的代码使用WPF DataGrid来存储条目表,该条目表绑定到项目的ObservableCollection,并且用户可以使用...处的空白行来创建新项目。 [

通常,它是DataGrid的正常行为。

当您开始编辑行时,DataGrid调用新集合项的Add()

    当您按下Escape键或以任何其他方式调用Remove()时,DataGrid会自动为该项目调用CancelEdit()
  • 使用空白/默认值支持(忽略代码)收集项没有什么奇怪的。或者,您可以添加一些代理集合,并在Datagrid保存行数据时将其更改提交到主集合。对于我来说,第一种方法是可取的。
  • c# wpf datagrid undo
    1个回答
    1
    投票

    当您开始编辑行时,DataGrid调用新集合项的Add()

    © www.soinside.com 2019 - 2024. All rights reserved.