2011-03-23 210 views
10

我知道,当即将显示数据时,将调用Convert()方法来转换数据,并转换显示转换后的数据。什么时候ConvertBack方法被调用?

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

我有DataGridItemSource被绑定到一些集合,我已经实现了IValueConverter集合中的项目的一个属性。当我制作IsReadOnly="True"(在DataGrid)时,如果双击单元格(为其实现IValueConverter)然后更改焦点,则会调用ConvertBack方法。但是当我做IsReadOnly="False",那么ConvertBack方法永远不会被调用,无论我如何处理DataGrid及其单元格。

请解释DataGrid单元的这种行为和ConvertBack方法的IValueConverter

+1

这就是所谓的绑定时的结合模式是双向(对于TextBox.Text和可能是CheckBox.IsChecked默认模式)。如果你明确设置了OneWay,我想这个方法不会被调用。 – vorrtex 2011-03-23 13:16:22

+0

我也有这个问题。如果我直接绑定到'DataTable',则源代码将在'CellEditEnding'上更新。如果我绑定到一个不同类型的对象,并在绑定中使用转换器将其转换为'DataTable',则''ConvertBack''永远不会被调用。含义用户编辑不会传播到源代码。我想知道是否需要派生自己的'DataTable'并为其添加某种通知逻辑。如果我找到解决方案,将会发布。 – 2011-05-11 09:44:00

回答

8

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

看到msdn

你应该张贴您为您的小区,其valueconverter

+1

所以如果你不想让它传播回到源代码,你可以使绑定Mode = OneWay? – steviesama 2015-10-12 23:54:04

相关问题