What is the use of ConvertBack
method in IValueConverter
interface.
When it will call?
Or what is the order of invocation of Convert
and ConvertBack
method.
I have ask question here because: I have bound one property of codebehind to TEXTBOX’s TEXT Property and using convertor
for that property,
then first Convert
Method invoke and when I change TEXT
in TEXTBOX
nothing happen but as soon as I close the form ConvertBack
method invoke.
what is this, there is not any rules that define when to fire ConvertBack
method?
NOTE: you may be find that this is possible duplicate of other question on this site...but not any question i have found use full in suggestion list when i writing my question.
ConvertBack
is when you havemode=TwoWay
on your binding.It converts the user input back into the datatype that you're binding to and gets invoked when the
TextBox
(say) loses focus.For example (if this wasn't built in), if you have a number that represents a price, the
Convert
method would take the value and format it into a string with the correct currency symbol, decimal separator etc.If the user types in a new value - including possible currency symbol, thousands separator etc. you'd use the
ConvertBack
method to parse the string and extract the numeric value.Another example could be credit card number input. The user could enter the number as a single string of digits or groups of digits separated by spaces or dashes. The
ConvertBack
method would take all these possible inputs and convert them to the single format you require.check the UpdateSourceTrigger Property on your Binding. http://msdn.microsoft.com/library/system.windows.data.binding.updatesourcetrigger.aspx
The textbox will by default update the source if it looses focus, using the UpdateSourceTrigger you can set this behaviour to immediate update of the source if the textbox content changes.
HTH Dominik
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, theConvertBack
method will be called as soon as the binding fires again (default OnFocusLost). Now yourConvertBack
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"
tofalse
.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: