2009-03-17 16 views
5

Desidero applicare un formato (allinea testo, formato per la valuta 0000.00) alle colonne in GridViewColumn.Formattazione testo WPF in GridViewColumn

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

L'idea è la seguente: Nelle colonne (GridViewColumn) il testo che il nostro potrebbe applicare un formato a lui (allineatori a sinistra, destra, centro, giustificare, etc.).

Nel codice seguente si possono vedere i diversi tentativi senza ottenere alcun risultato

Il codice è il seguente:

<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

Mi dispiace, non riesco a capire. Chiunque altro? – Ray

+0

Spiego meglio? Grazie per l'aiuto – Ozplc

+0

Perché questa domanda è una wiki della comunità? –

risposta

17

Ecco come ho fatto qualcosa di simile (formato e allineare una colonna di valuta):

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

ho anche aggiunto questo stile:

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

Se non si utilizza .NET 3.5 SP1 , dovrai usare un convertitore invece di StringFormat.

+0

Devi farlo per ogni singola colonna? – Stylzs05

+0

@ Stylzs05 - sì. WPF per la vittoria :( – JumpingJezza

2

Per avere una StringFormat per valuta per Ad esempio, è possibile utilizzare "StringFormat" che è stato introdotto sull'oggetto vincolante in .net3.5 sp1, penso.

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

Oltre a questo, devo dire che non capisco la tua domanda sia.

+0

Grazie mille per la risposta, ma non riesco a farlo funzionare. – Ozplc

+0

Hmm davvero. Non funziona neanche qui. Sembra che l'XML che stai leggendo sia già una stringa e che la funzione di formattazione non ci sia. Altre possibilità: convertitori di valore: http://www.kirupa.com/blend_wpf/value_converters_pg1.htm –

Problemi correlati