What is the use of ConvertBack method in IValueConverter interface?

IMO, the ConvertBack method is used to convert your visual representation of the data to the specific DataType.

For example: you use a Converter to convert a boolean true to the string "TrueBoolean". This text will be displayed in your TextBox. When you change the value of the TextBox, the ConvertBack method will be called as soon as the binding fires again (default OnFocusLost). Now your ConvertBack method will try to convert the new value to the datatype you want it to be. So you will have to implement logic to convert "FalseBoolean" to false.

public class Converter : IValueConverter
{
    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool) value ? "TrueBoolean" : "FalseBoolean";
    }

    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = (string) value;
        if (s.Equals("TrueBoolean",StringComparison.CurrentCultureIgnoreCase))
            return true;
        if (s.Equals("FalseBoolean", StringComparison.CurrentCultureIgnoreCase))
            return false;
        throw new Exception(string.Format("Cannot convert, unknown value {0}", value));
    }
}

This technique is used a lot in DataGrids if I’m not mistaken.

Hope this is a bit clear…

UPDATE
About you question in the comment:
To overwrite the default OnFocusLost binding behavior you have to change your binding like this:

<TextBox Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}"/>
<!--syntax might differ, can't access VS at the moment.-->

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)