【问题标题】:When does ConvertBack method get called?什么时候调用 ConvertBack 方法?
【发布时间】:2026-01-13 22:00:01
【问题描述】:

我知道当数据即将显示时,调用Convert()方法转换数据,然后显示转换后的数据。

我想知道ConvertBack() 方法何时被调用?它的目的是什么?

我有一个DataGrid,其ItemSource 绑定到某个集合,并且我已经为集合中项目的一个属性实现了IValueConverter。当我创建IsReadOnly="True"(在DataGrid中)时,如果我双击单元格(实现IValueConverter)然后更改焦点,则会调用ConvertBack 方法。但是当我创建IsReadOnly="False" 时,无论我对DataGrid 及其单元格做什么,都不会调用ConvertBack 方法。

请解释DataGrid 单元格的这种行为和IValueConverterConvertBack 方法。

【问题讨论】:

  • 当绑定模式为 TwoWay 时调用(TextBox.Text 的默认模式,可能 CheckBox.IsChecked 的默认模式)。如果你显式设置 OneWay ,我认为不会调用该方法。
  • 我也遇到了这个问题。如果我直接绑定到DataTable,则源会在CellEditEnding 上更新。如果我绑定到不同类型的对象并在绑定中使用转换器将其转换为DataTable 即时ConvertBack 永远不会被调用。这意味着用户编辑不会传播到源。我想知道是否需要派生自己的DataTable 并为其添加某种通知逻辑。如果我找到解决方案会发布。

标签: c# wpf silverlight binding ivalueconverter


【解决方案1】:

“数据绑定引擎在将值从绑定目标传播到绑定源时调用此方法。”

msdn

您应该使用 valueconverter 发布您的单元格绑定

【讨论】:

  • 因此,如果您不希望它传播回源,则使绑定 Mode=OneWay?
最近更新 更多