【发布时间】:2026-01-13 22:00:01
【问题描述】:
我知道当数据即将显示时,调用Convert()方法转换数据,然后显示转换后的数据。
我想知道ConvertBack() 方法何时被调用?它的目的是什么?
我有一个DataGrid,其ItemSource 绑定到某个集合,并且我已经为集合中项目的一个属性实现了IValueConverter。当我创建IsReadOnly="True"(在DataGrid中)时,如果我双击单元格(实现IValueConverter)然后更改焦点,则会调用ConvertBack 方法。但是当我创建IsReadOnly="False" 时,无论我对DataGrid 及其单元格做什么,都不会调用ConvertBack 方法。
请解释DataGrid 单元格的这种行为和IValueConverter 的ConvertBack 方法。
【问题讨论】:
-
当绑定模式为 TwoWay 时调用(TextBox.Text 的默认模式,可能 CheckBox.IsChecked 的默认模式)。如果你显式设置 OneWay ,我认为不会调用该方法。
-
我也遇到了这个问题。如果我直接绑定到
DataTable,则源会在CellEditEnding上更新。如果我绑定到不同类型的对象并在绑定中使用转换器将其转换为DataTable即时ConvertBack永远不会被调用。这意味着用户编辑不会传播到源。我想知道是否需要派生自己的DataTable并为其添加某种通知逻辑。如果我找到解决方案会发布。
标签: c# wpf silverlight binding ivalueconverter