【发布时间】:2013-10-24 14:18:00
【问题描述】:
我的应用程序中有几个 XamDataGrids,我希望它们在用户更改其中的复选框后立即启用相应的保存按钮。这目前不会发生,直到我离开单元格或按 Enter 等,因为单元格仍处于编辑模式。我知道如何使用我在代码隐藏中找到的帖子来解决这个问题:
private void XamDataGrid_CellChanged(object sender, Infragistics.Windows.DataPresenter.Events.CellChangedEventArgs e)
{
e.Cell.Record.SetCellValue(e.Cell.Field, e.Editor.Value, true);
}
但是我怎样才能在整个应用程序中为我的所有网格处理这个问题,而不把它放在每个网格的代码隐藏中?我正在使用 MVVM,如果可能的话,我希望不要有任何代码。如果必须,我会的,但我绝对不希望它出现在 17 个带有网格的不同文件的代码中。也许是一种行为?
【问题讨论】:
-
这听起来像你需要在你的
Bindings 上将Binding.UpdateSourceTrigger属性添加到PropertyChanged的值......听起来他们目前设置为LostFocus?跨度> -
听起来像但不是,xamdatagrid 中的单元格“仍处于编辑模式”,因此将 UpdateSourceTrigger 设置为 PropertyChanged 没有任何效果,事实上,这是我相信的默认值
-
您可以在 MVVM 中进行代码隐藏。这不可能是业务逻辑。
-
你可以创建一个新类并继承
XamDataGrid。这样,您可以覆盖受保护的方法OnCellChanged并添加您发布的实现。这将消除向所有文件添加代码隐藏的必要性。 -
这是个好主意,可能我会这样做。我仍然想听听谁能告诉我我是否可以((应该?)通过一种行为来实现这一点以及如何做到这一点。
标签: c# wpf xamdatagrid