Establecer el valor en nulo en WPF vinculante

por favor, eche un vistazo a la siguiente línea

 

¿Esta propiedad de precio desde arriba es un Decimal? (Decimal numerable).

Quiero que si el usuario elimina el contenido del cuadro de texto (es decir, ingresa cadena vacía, debería actualizar automáticamente la fuente con nulo (Nothing en VB).

¿Alguna idea sobre cómo puedo hacerlo ‘Xamly’?

Estoy usando .NET 3.5 SP1, así que es muy simple:

  

Que significa (gracias Gregor por tu comentario):

  

sys es el espacio de nombres xml importado para System en mscorlib :

 xmlns:sys="clr-namespace:System;assembly=mscorlib" 

Espero que haya ayudado.

Este convertidor de valor debería hacer el truco:

 public class StringToNullableDecimalConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { decimal? d = (decimal?)value; if (d.HasValue) return d.Value.ToString(culture); else return String.Empty; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { string s = (string)value; if (String.IsNullOrEmpty(s)) return null; else return (decimal?)decimal.Parse(s, culture); } } 

Declara una instancia de este convertidor en los recursos:

    

Y úsala en tu encuadernación:

  

Tenga en cuenta que TargetNullValue no es apropiado aquí: se usa para definir qué valor se debe usar cuando el source del enlace es nulo. Aquí Price no es la fuente, es una propiedad de la fuente …

Puede intentar usar un ValueConverter (IValueConverter) http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

De la parte de atrás de mi cabeza, algo así como:

 public class DoubleConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return (double)value; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { var doubleValue = Convert.ToDouble(value); return (doubleValue == 0 ? null : doubleValue); } } 

(Podría necesitar algunos ajustes)