【发布时间】:2010-01-19 17:46:30
【问题描述】:
我目前正在使用 WPF 和包含 WindowsForms 样式 DataGrid 的 WPF 工具包。
我已将自定义对象列表作为 ItemsSource 绑定到网格。这些对象包含两个可使用数据网格编辑的布尔属性。使用内置数据绑定模型同步回我的列表可以正常工作,但是如果其中一个 CheckBox 值更改为将对象序列化回 XML 中,我必须调用另一种方法。不幸的是,我不能在我的数据类本身中进行这种缓存,因为它不知道它的缓存提供者。
因此,我需要 DataGrid 上的一个事件,该事件会在复选框值更改后立即触发。
我已经从原始 DataGridCheckBoxColumn 继承了一个 AutoCommitCheckBoxColumn 类,它覆盖了 GenerateEditingElement(DataGridCell cell, object dataItem) 方法以及 checkbox_(Un-)Checked 处理程序。
显然我不能也不想从这里调用缓存方法 - 它需要在 DataGrid 所在的 Window 类中完成。
所以 - 我只是找不到合适的事件:MouseButton.. 事件仅在单击外部单元格空间而不是单元格中的内部复选框时触发。 CellEditEnding 可以工作,但只有在(取消)选中复选框后选择另一个单元格时才会触发。 SourceUpdated 根本不会触发。
谁能帮我举办一场合适的活动?或者我可以以某种方式从我的 AutoCommitCheckBoxColumn 类安全地触发数据网格上的事件吗?
非常感谢您!
【问题讨论】: