There was a typo in my fix.
I was supposed to use "double back slash on both the starting and ending curly brace", i was applying only at the begining. It should have been like so. \\{0: ###.000; -###.00; -\\}
In .net 4.5 and above the back slash is not required any more. StringFormat={}{0: ###.000; -###.00; -}