You can use a value converter for this, but you don't need to. You can simply use the StringFormat of the Binding markup extension to specify a three-digit numeric format string . It will look like this:
<TextBox Text="{Binding Path=Amount, StringFormat='0.00;-0.00;#'}" />
.NET , , - . , (#). , , .
, StringFormat Silverlight 4. Silverlight 3, . (, ...)
public class ZeroConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return String.Format(culture, "{0:0.00;-0.00;#}", value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string str = value as string;
if (!String.IsNullOrEmpty(str)) {
return System.Convert.ChangeType(str, targetType, culture);
}
return System.Convert.ChangeType(0, targetType, culture);
}
}
XAML
<UserControl>
<UserControl.Resources>
<local:ZeroConverter x:Key="ZeroToEmpty" />
</UserControl.Resources>
</UserControl>
<TextBox Text="{Binding Path=Amount, Converter={StaticResource ZeroToEmpty}}" />