2011-01-24 17 views
23

He vinculado mi Cantidad Etiqueta Propiedad de contenido a una propiedad decimal a través de DataContext. Estoy tratando de aplicar formato de cadena pero no veo efecto. ¿La característica StringFormat funciona en los controles Label? Por favor, dime en qué controles funciona esta característica. Por cierto que sigue es el código para el control de etiqueta para los que quiero aplicar el formato de moneda¿Funciona la característica StringFormat de WPF Xaml en Label.Content?

<Label Grid.Column="2" Content="{Binding Path=Amount, StringFormat={}{0:C}}" Height="23" HorizontalAlignment="Left" Margin="100,10,0,0" Name="tb" VerticalAlignment="Bottom" Width="120" /> 

Respuesta

29

StringFormat trabajos sobre las propiedades de tipo cadena (cuando el objeto está enlazando a se está convirtiendo en una cadena el formato de cadena es aplicado). La propiedad Content es del tipo Object.

Se puede colocar un TextBlock dentro de su etiqueta para lograr el efecto deseado:

<Label Grid.Column="2" Height="23" HorizontalAlignment="Left" Margin="100,10,0,0" Name="tb" VerticalAlignment="Bottom" Width="120"> 
    <TextBlock Text="{Binding Path=Amount, StringFormat={}{0:C}}"/> 
</Label> 
+0

Todavía ningún efecto :( –

+0

Esto es realmente una situación extraña .Puedo aplicar el formato de cadena para GridViewColumns y Textblock definidos en una plantilla de datos en App.xaml, pero cuando defino el mismo TextBlock en Pa ge, no funciona? ¿Funciona StringFormatting cuando el control está vinculado a DataContext? –

+3

OK, según tengo entendido, deben cumplirse dos condiciones para que StringFormat funcione: la propiedad de destino de su enlace debe ser de tipo cadena (como la propiedad "Texto" en el bloque de texto) y la propiedad de origen ("Cantidad")) NO debe ser una cadena. Lea también la documentación en MSDN: http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat.aspx. –