2012-03-01 15 views
10

Estoy luchando con mi primera incursión en el formato de cadenas WPF. Me gustaría poder formatear una columna de cuadro de texto en una cuadrícula de datos con una cadena vacía cuando el valor subyacente es cero y formatear todos los demás valores como 0.000. Sin embargo, mi XAML no parece estar a la altura, ya que muestra todos los espacios en blanco para valores y no sólo para los ceros:¿Formatear valores cero como cadena vacía?

<DataGridTextColumn Header="dL" Binding="{Binding Path=Value.DLHistoric, StringFormat='{}{0.000;; }'" Width="Auto" /> 

estoy usando el operador punto y coma como se describe here y han añadido un espacio después del segundo punto y coma para obtener la cadena vacía.

¡Muchas gracias!

actualización

Este es el truco:

<DataGridTextColumn Header="dL" Binding="{Binding Path=Value.DLHistoric, StringFormat=0.000;;#}" Width="Auto" /> 
+0

lo que sucede cuando no esté en WPF? Pruébalo en un programa simple de consola y ¿qué ocurre? –

+0

Está absolutamente bien en una pequeña aplicación de prueba. Solo en WPF parece que no funciona. –

+0

¿Qué ocurre si elimina el '{}' al principio? –

Respuesta

3

Ejemplo IValueConverter

[ValueConversion(typeof(string), typeof(string))] 
    public class StringToFeetAndInches : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      string str = value as string; 
      if (string.IsNullOrEmpty(str)) return str; 
      str = str.Insert(1, "'"); 
      str = str + "\""; 
      return str; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return 0; 
     } 
    } 

<UserControl.Resources> 
<NS:StringToFeetAndInches x:Key="cStringToFeetAndInches"/> 
</UserControl.Resource> 

<TextBlock Text="{Binding Path=Height, Converter={StaticResource cStringToFeetAndInches}}" /> 
+1

Gracias por eso. –

+1

@Callonian Coder tienes que comprobarlo como respondió entonces ... Y darme un voto positivo – 0x4f3759df

+1

Sí, no estoy seguro de cómo hacer cualquiera de los dos. Déjame revisar las preguntas frecuentes –

Cuestiones relacionadas