WPF踩坑记录:在DataGrid的RowEditEnding(CellEditEnding)事件中获取的数据源,默认是更改前的而非更改后的

踩坑描述:

        我想在RowEditEnding中获取更改后的数据,但是这个RowEditEnding事件是在更改提交前触发的,意味着它获取到更改行的数据源就是旧的。(CellEditEnding也是如此)
        也许这个事件适用于应用修改前检测修改是否合法,不合法可以撤销修改,但我想实现的效果是对更改后的数据进行操作的。然后我也找不到有类似于RowEditEnded之类能获取到修改后数据的事件。网上找了好久终于找到答案,最终的更改很简单,但是感觉并不是特别优雅,也许WPF的DataGrid本身就是个鸡肋吧……

解决方法:

        数据源的值默认是执行完该事件后才会被更新。因此,我们需要在该事件执行前,就要让数据源得到更新。
        在Xaml文件中,当进行数据绑定时,更改DataGrid中相应列的UpdateSourceTrigger为PropertyChanged

吐槽:

        但真的觉得这样做不是很好,因为这相当于提前应用了修改,意味着把RowEditEnding的撤销用法给整没了…… 但似乎也没有第二种做法了。也许这就是“RowEditEnding和RowEditEnded"不可得兼吧……

实测在此情况 下图中的Cancel无效:

这几天其实还踩到好多DataGrid的坑,最好的解决方法应该是下次不用WPF的DataGrid了A..A

参考资料:获取wpf datagrid单元格编辑事件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值