首页 > 解决方案 > WPF Datagrid 在点击时复制和粘贴,为什么?

问题描述

我有一个 wpf C# 项目,它带有一个从数据表填充的标准 wpf 数据网格。每次源更改时它都会反弹到表中(因为我有时使用数据网格来显示来自不同源的数据)。我处理 SelectedCellsChanged 事件以突出显示选定的列,并处理 CellEditEnding 事件以使用用户所做的任何单元格更改来更新源表。

这是奇怪的事情:当我双击一个单元格然后单击另一个单元格时,双击单元格的值被粘贴到单击的单元格中。我根本不处理单元格双击,这种行为似乎是数据网格固有的,但我无法通过谷歌搜索任何信息。

我想摆脱这种行为,或者能够捕捉到它(我的应用程序记录并重复用户所做的任何操作,并且一键复制粘贴实际上非常简洁,如果我可以捕捉并保存该动作)。

标签: c#wpfdatagrid

解决方案


实际上,是我的代码导致了问题。问题是,当单元格失去焦点时会引发 CellEditEnding 事件,并且我设法用前一个单元格的编辑值(失去焦点的那个)更新正在单击的单元格。

我努力寻找解决方案,因为没有细胞离开事件。终于解决了,不是很漂亮,像这样:

string rrow = MyGrid.Items.IndexOf(MyGrid.CurrentItem);
if (!(e.Column.Header.ToString() == MyDataTable.Columns[selectedColumn].ColumnName && e.Row.GetIndex() == rrow))
 return;

推荐阅读