如何取消datagrid的编辑

3
我有一个视图,使用了一个包含数据网格的用户控件。视图的要求是,如果用户删除“客户名称”列中的值,然后离开单元格,则不提交编辑并将值更改回其原始值,即不允许空客户名称。该用户控件是共享代码,并用于多个应用程序之间。编辑取消要求特别针对上述视图(而不是使用用户控件的所有应用程序)。如何检测客户名称单元格的值已被删除,并在值为空时取消编辑?
1个回答

4
您可以处理CellEditEnding - 它在单元格编辑提交或取消之前发生。在这里,您可以验证单元格的当前值,如果它满足您的条件,您可以做任何您想做的事情。MSDN
编辑: 这是我的建议,但我无法批准它。 您可以通过e.Row.Item获取新值,并将其转换为放置在DataGrid上的对象。 另一种方法是直接将sender对象进行类型转换,以获得对新单元格值的访问权限。
+1 是指DataGridCellEditEndingEventArgs.EditingElement。它是FrameworkElement,我想您知道它是什么(可能是TextBox或其他内容)。
此外,我认为您知道应该做什么!

是的,那就是我的代码要放的地方。问题是,由于提交还没有发生,我不知道单元格中最近输入的值。我可以获取“旧”的值——刚刚被删除的值,但我不知道用户试图将其更改为什么。我认为在CellEditEnding事件中,我需要深入到单元格内部的文本框,并查看其文本属性,以查看用户试图将其更改为什么。不确定我该如何做。 - ihatemash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接