How to convert a null double databound value to an empty string?

I have this Payment object

public class Payment 
{
    public Guid Id { get; set; }
    public double Amount { get; set; }
}

which is associated with data from a TextBox

<TextBox x:Name="_AmountTB" Text="{Binding Path=Amount, Mode=TwoWay}" />

I require that whenever the Sum is 0, I do not show anything in the TextBox, how can this be done?

I think it's kind of a converter, but do I need someone to show me how to do this, please?

Thank,

voodoo

+3
source share
2 answers

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}}" />
+4
public class BlankZeroConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter,
                              System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return null;

            if (value is double)
            {
                if ((double)value == 0)
                {
                    return string.Empty;
                }
                else
                    return value.ToString();

            }
            return string.Empty;
        }
   }
+1

Source: https://habr.com/ru/post/1755422/


All Articles