2009-03-17 20 views
5

Quiero aplicar un formato (alinear texto, formato para la moneda 0000.00) a las columnas en GridViewColumn.Formato de texto WPF en GridViewColumn

<GridViewColumn TextBlock.TextAlignment="Center" Width="80" DisplayMemberBinding="{Binding XPath=Name}"/> 

La idea es la siguiente: En las columnas (GridViewColumn) el texto que nuestro podría aplicar un formato a él (alineadores a la izquierda, derecha, centro, justificar, etc.).

En el siguiente código se pueden ver los diferentes intentos sin obtener ningún resultado

El código es el siguiente:

<Window x:Class="ListViewTest.Test0.ListViewTest" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Empty ListView Grid" Height="216" Width="435" FlowDirection="LeftToRight" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.IsSharedSizeScope="False"> 
    <Window.Resources> 
     <XmlDataProvider x:Key="CustomersDS" Source="C:\data.xml"/> 
     <Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}"> 
      <Setter Property="Visibility" Value="Collapsed" /> 
     </Style> 
    </Window.Resources> 



    <ListView Margin="0,0,0,50" ItemTemplate="{DynamicResource CustomerTemplate}" ItemsSource="{Binding Source={StaticResource CustomersDS}, XPath=/Customers/Customer}"> 
     <ListView.View> 
      <!--ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}"--> 
      <GridView > 
       <GridViewColumn Width="80" TextBlock.TextAlignment="Center"> 
        <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock HorizontalAlignment="Center" Text="{Binding XPath=Code}"></TextBlock> 
        </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
       <GridViewColumn TextBlock.TextAlignment="Center" Width="80" DisplayMemberBinding="{Binding XPath=Name}"/> 
       <GridViewColumn Width="120" TextBlock.TextAlignment="center" DisplayMemberBinding="{Binding XPath=Country}"/> 
       <GridViewColumn Width="120" TextBlock.TextAlignment="center" DisplayMemberBinding="{Binding XPath=money}"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 


</Window> 

XML

 <Customers> 
    <Customer> 
<Code>1234</Code> 
<Name>EPI</Name> 
<Country>Sesame Street</Country> 
<money> 98.00</money> 
    </Customer> 
    <Customer> 
<Code>3234</Code> 
<Name>Paul</Name> 
<Country>United Kingdom</Country> 
<money> 8.70</money> 
    </Customer> 
<Customer> 
<Code>3344</Code> 
<Name>Juan</Name> 
<Country>Spain</Country> 
<money> 785.5</money> 
    </Customer> 
<Customer> 
<Code>4321</Code> 
<Name>Dodo</Name> 
<Country>Venezuela</Country> 
<money> 150.02</money> 
    </Customer> 
</Customers> 
+0

Lo siento, no puedo entender. ¿Alguien mas? – Ray

+0

lo explico mejor? Gracias por ayudar – Ozplc

+0

¿Por qué esta pregunta es una wiki de la comunidad? –

Respuesta

17

Aquí es cómo lo hice algo similar (formato y alinear una columna de moneda):

<GridViewColumn Header="Amount"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock TextAlignment="Right" 
         Text="{Binding Path=Amount, StringFormat='{}{0:C}'}" /> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

También he añadido este estilo:

<Style TargetType="ListViewItem"> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
</Style> 

Si no está utilizando .NET 3.5 SP1 , necesitarás usar un convertidor en lugar de StringFormat.

+0

¿Tienes que hacer eso para cada columna? – Stylzs05

+0

@ Stylzs05 - sí. WPF por la victoria :( – JumpingJezza

2

Para tener una StringFormat para la moneda de Por ejemplo, puede usar "StringFormat" que se introdujo en el objeto vinculante en .net3.5 sp1, creo.

Text="{Binding XPath=Code, StringFormat=0.000}" 

Además de eso, debo decir que no entiendo muy bien su pregunta tampoco.

+0

Muchas gracias por su respuesta, pero no puedo hacer que funcione. – Ozplc

+0

Hmm de hecho. No funciona aquí tampoco. Parece que el XML que está leyendo ya es una cadena, y la función de formateo no funciona allí. Otra posibilidad: convertidores de valor: http://www.kirupa.com/blend_wpf/value_converters_pg1.htm –

Cuestiones relacionadas